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
- Int32CAMarshaler.cs
- CellPartitioner.cs
- MenuItemCollection.cs
- DataColumnCollection.cs
- PocoPropertyAccessorStrategy.cs
- HttpRawResponse.cs
- KernelTypeValidation.cs
- Win32PrintDialog.cs
- SpellerHighlightLayer.cs
- WindowsToolbar.cs
- EntityDataSourceContextDisposingEventArgs.cs
- DeferrableContent.cs
- itemelement.cs
- DecimalConstantAttribute.cs
- GACIdentityPermission.cs
- odbcmetadatacolumnnames.cs
- TouchEventArgs.cs
- RoleGroup.cs
- XPathDocumentNavigator.cs
- SettingsPropertyValueCollection.cs
- FormsAuthenticationUserCollection.cs
- AnonymousIdentificationSection.cs
- COSERVERINFO.cs
- HwndSourceParameters.cs
- XMLSchema.cs
- PropertyInfo.cs
- ArrangedElementCollection.cs
- X509SubjectKeyIdentifierClause.cs
- BlockUIContainer.cs
- SettingsPropertyValueCollection.cs
- MarkupWriter.cs
- Rfc4050KeyFormatter.cs
- precedingquery.cs
- IgnoreFileBuildProvider.cs
- RawMouseInputReport.cs
- ObservableCollection.cs
- QuaternionAnimation.cs
- ListSortDescription.cs
- CompositeDispatchFormatter.cs
- HttpListenerTimeoutManager.cs
- SequenceFullException.cs
- DelegateTypeInfo.cs
- DataGridViewRowCancelEventArgs.cs
- ChangeDirector.cs
- SqlPersonalizationProvider.cs
- TypeUtil.cs
- ServerValidateEventArgs.cs
- MessageBox.cs
- SQLSingleStorage.cs
- cache.cs
- WebConfigurationHost.cs
- PenThreadPool.cs
- AncillaryOps.cs
- SessionEndingCancelEventArgs.cs
- FormViewPageEventArgs.cs
- XmlSortKey.cs
- ZipIOCentralDirectoryFileHeader.cs
- TimeoutValidationAttribute.cs
- WebEvents.cs
- PageAdapter.cs
- AsyncPostBackTrigger.cs
- InvokePatternIdentifiers.cs
- TemplatePropertyEntry.cs
- URLMembershipCondition.cs
- WebCategoryAttribute.cs
- ToolStripItemCollection.cs
- RequestUriProcessor.cs
- DataGridViewRowCancelEventArgs.cs
- KnownTypesProvider.cs
- InboundActivityHelper.cs
- returneventsaver.cs
- HandlerBase.cs
- listitem.cs
- TrustManagerPromptUI.cs
- TypeNameConverter.cs
- ToolStripItemEventArgs.cs
- ProfileGroupSettings.cs
- Int16Animation.cs
- OverrideMode.cs
- ErrorHandler.cs
- TrackingRecord.cs
- ItemDragEvent.cs
- UpdateTracker.cs
- VerticalAlignConverter.cs
- RtfNavigator.cs
- Collection.cs
- Color.cs
- VisualTarget.cs
- ImportStoreException.cs
- ServiceInstallComponent.cs
- TextSpanModifier.cs
- util.cs
- ManagementObject.cs
- XmlTextAttribute.cs
- StringDictionary.cs
- Operators.cs
- AppDomainUnloadedException.cs
- SerTrace.cs
- ValueTable.cs
- WSHttpTransportSecurityElement.cs