Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Linq / Parallel / Utils / Util.cs / 1305376 / Util.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ // // Util.cs // //[....] // // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- using System.Collections.Generic; namespace System.Linq.Parallel { ////// Common miscellaneous utility methods used throughout the code-base. /// internal static class Util { //------------------------------------------------------------------------------------ // Simple helper that returns a constant depending on the sign of the argument. I.e. // if the argument is negative, the result is -1; if it's positive, the result is 1; // otherwise, if it's zero, the result is 0. // internal static int Sign(int x) { return x < 0 ? -1 : x == 0 ? 0 : 1; } //----------------------------------------------------------------------------------- // This is a temporary workaround for a VSWhidbey bug 601998 in the X64 JIT compiler. // Unlike the X86 JIT, null checks on value types aren't optimized away in Whidbey. // That means using the GenericComparerinfrastructure results in boxing value // types. This kills performance all over the place. This bug has been fixed in // Orcas (2.0 SP1), so once we're on the SP1 runtime, this can be removed. // internal static Comparer GetDefaultComparer () { if (typeof(TKey) == typeof(int)) { return (Comparer )(object)s_fastIntComparer; } else if (typeof(TKey) == typeof(long)) { return (Comparer )(object)s_fastLongComparer; } else if (typeof(TKey) == typeof(float)) { return (Comparer )(object)s_fastFloatComparer; } else if (typeof(TKey) == typeof(double)) { return (Comparer )(object)s_fastDoubleComparer; } else if (typeof(TKey) == typeof(DateTime)) { return (Comparer )(object)s_fastDateTimeComparer; } return Comparer .Default; } private static FastIntComparer s_fastIntComparer = new FastIntComparer(); class FastIntComparer : Comparer { public override int Compare(int x, int y) { return x.CompareTo(y); } } private static FastLongComparer s_fastLongComparer = new FastLongComparer(); class FastLongComparer : Comparer { public override int Compare(long x, long y) { return x.CompareTo(y); } } private static FastFloatComparer s_fastFloatComparer = new FastFloatComparer(); class FastFloatComparer : Comparer { public override int Compare(float x, float y) { return x.CompareTo(y); } } private static FastDoubleComparer s_fastDoubleComparer = new FastDoubleComparer(); class FastDoubleComparer : Comparer { public override int Compare(double x, double y) { return x.CompareTo(y); } } private static FastDateTimeComparer s_fastDateTimeComparer = new FastDateTimeComparer(); class FastDateTimeComparer : Comparer { public override int Compare(DateTime x, DateTime y) { return x.CompareTo(y); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ // // Util.cs // // [....] // // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- using System.Collections.Generic; namespace System.Linq.Parallel { ////// Common miscellaneous utility methods used throughout the code-base. /// internal static class Util { //------------------------------------------------------------------------------------ // Simple helper that returns a constant depending on the sign of the argument. I.e. // if the argument is negative, the result is -1; if it's positive, the result is 1; // otherwise, if it's zero, the result is 0. // internal static int Sign(int x) { return x < 0 ? -1 : x == 0 ? 0 : 1; } //----------------------------------------------------------------------------------- // This is a temporary workaround for a VSWhidbey bug 601998 in the X64 JIT compiler. // Unlike the X86 JIT, null checks on value types aren't optimized away in Whidbey. // That means using the GenericComparerinfrastructure results in boxing value // types. This kills performance all over the place. This bug has been fixed in // Orcas (2.0 SP1), so once we're on the SP1 runtime, this can be removed. // internal static Comparer GetDefaultComparer () { if (typeof(TKey) == typeof(int)) { return (Comparer )(object)s_fastIntComparer; } else if (typeof(TKey) == typeof(long)) { return (Comparer )(object)s_fastLongComparer; } else if (typeof(TKey) == typeof(float)) { return (Comparer )(object)s_fastFloatComparer; } else if (typeof(TKey) == typeof(double)) { return (Comparer )(object)s_fastDoubleComparer; } else if (typeof(TKey) == typeof(DateTime)) { return (Comparer )(object)s_fastDateTimeComparer; } return Comparer .Default; } private static FastIntComparer s_fastIntComparer = new FastIntComparer(); class FastIntComparer : Comparer { public override int Compare(int x, int y) { return x.CompareTo(y); } } private static FastLongComparer s_fastLongComparer = new FastLongComparer(); class FastLongComparer : Comparer { public override int Compare(long x, long y) { return x.CompareTo(y); } } private static FastFloatComparer s_fastFloatComparer = new FastFloatComparer(); class FastFloatComparer : Comparer { public override int Compare(float x, float y) { return x.CompareTo(y); } } private static FastDoubleComparer s_fastDoubleComparer = new FastDoubleComparer(); class FastDoubleComparer : Comparer { public override int Compare(double x, double y) { return x.CompareTo(y); } } private static FastDateTimeComparer s_fastDateTimeComparer = new FastDateTimeComparer(); class FastDateTimeComparer : Comparer { public override int Compare(DateTime x, DateTime y) { return x.CompareTo(y); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ToolStripSystemRenderer.cs
- WindowsProgressbar.cs
- ReflectionHelper.cs
- PointLightBase.cs
- CryptoKeySecurity.cs
- MimeFormImporter.cs
- SelectorAutomationPeer.cs
- LinkedResourceCollection.cs
- WebBrowserDocumentCompletedEventHandler.cs
- cryptoapiTransform.cs
- SelectedCellsCollection.cs
- ImportedNamespaceContextItem.cs
- PreservationFileWriter.cs
- EnvironmentPermission.cs
- ListViewDataItem.cs
- DesignerLoader.cs
- DataColumnMapping.cs
- EventlogProvider.cs
- PassportAuthenticationEventArgs.cs
- GrowingArray.cs
- Listbox.cs
- FileLevelControlBuilderAttribute.cs
- FileUtil.cs
- BaseCodeDomTreeGenerator.cs
- EventToken.cs
- LicFileLicenseProvider.cs
- DropSource.cs
- TypeSource.cs
- CodeActivityMetadata.cs
- Tool.cs
- XslTransformFileEditor.cs
- OleAutBinder.cs
- ScriptManager.cs
- WmlValidationSummaryAdapter.cs
- ColorAnimation.cs
- DataControlFieldHeaderCell.cs
- BinaryObjectInfo.cs
- DataGrid.cs
- PreservationFileWriter.cs
- DateTimeFormat.cs
- cookiecollection.cs
- StylusTip.cs
- PointAnimation.cs
- DelegateSerializationHolder.cs
- ZipIOLocalFileHeader.cs
- CompleteWizardStep.cs
- PluralizationServiceUtil.cs
- ClearTypeHintValidation.cs
- XmlDataImplementation.cs
- XmlSchemaImport.cs
- ConfigsHelper.cs
- ReceiveCompletedEventArgs.cs
- SByteStorage.cs
- Command.cs
- QilGenerator.cs
- TemplateControlParser.cs
- WebServiceBindingAttribute.cs
- StringConcat.cs
- SecurityKeyType.cs
- TemplateAction.cs
- CachingHintValidation.cs
- DataGridViewRowsRemovedEventArgs.cs
- Range.cs
- SQLDateTimeStorage.cs
- ViewgenContext.cs
- RuleInfoComparer.cs
- DbgUtil.cs
- GridViewDeleteEventArgs.cs
- MouseButton.cs
- AutomationTextAttribute.cs
- SqlUtils.cs
- WsdlBuildProvider.cs
- SubordinateTransaction.cs
- DataService.cs
- SemaphoreSecurity.cs
- SpeechRecognizer.cs
- ECDiffieHellman.cs
- PasswordPropertyTextAttribute.cs
- CompiledQueryCacheKey.cs
- BitmapPalettes.cs
- PlaceHolder.cs
- TrustManagerMoreInformation.cs
- MeasurementDCInfo.cs
- CorrelationValidator.cs
- PageBreakRecord.cs
- OletxTransactionManager.cs
- FrameworkElement.cs
- TcpTransportElement.cs
- DesignerUtils.cs
- TextProperties.cs
- BitmapPalette.cs
- VerificationAttribute.cs
- FormViewDeleteEventArgs.cs
- InfoCardXmlSerializer.cs
- TreeViewImageIndexConverter.cs
- HtmlInputButton.cs
- EmptyQuery.cs
- SqlRowUpdatedEvent.cs
- AnnotationResourceCollection.cs
- Proxy.cs