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
- PixelShader.cs
- SqlCharStream.cs
- WebScriptMetadataMessageEncoderFactory.cs
- Utils.cs
- ApplicationDirectoryMembershipCondition.cs
- DoubleKeyFrameCollection.cs
- NavigationExpr.cs
- ToolStripContentPanel.cs
- EventSinkActivityDesigner.cs
- AddressAlreadyInUseException.cs
- XamlParser.cs
- ResourceDescriptionAttribute.cs
- Hex.cs
- MessageQueueKey.cs
- TreeBuilderXamlTranslator.cs
- XmlUnspecifiedAttribute.cs
- TheQuery.cs
- FormsAuthenticationUser.cs
- SqlMethodAttribute.cs
- NumericExpr.cs
- TextSegment.cs
- SolidBrush.cs
- TextMetrics.cs
- MarkupExtensionSerializer.cs
- DocumentXmlWriter.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- Int16Converter.cs
- TextCompositionEventArgs.cs
- MsmqHostedTransportConfiguration.cs
- DataSourceCache.cs
- RoleService.cs
- OperatingSystem.cs
- XmlSchemaSubstitutionGroup.cs
- PenContexts.cs
- Stacktrace.cs
- TimelineGroup.cs
- DbProviderFactory.cs
- BridgeDataRecord.cs
- TreeViewImageKeyConverter.cs
- Rules.cs
- XamlToRtfWriter.cs
- Binding.cs
- MsmqInputMessagePool.cs
- DbConnectionHelper.cs
- DesignBinding.cs
- SafeEventHandle.cs
- TimeoutHelper.cs
- FillErrorEventArgs.cs
- VectorKeyFrameCollection.cs
- WindowsToolbarItemAsMenuItem.cs
- FieldNameLookup.cs
- DataListCommandEventArgs.cs
- ConfigurationManagerInternal.cs
- RightsManagementEncryptedStream.cs
- TypeSemantics.cs
- ExpressionParser.cs
- TextParagraph.cs
- EventEntry.cs
- EventsTab.cs
- DynamicPropertyHolder.cs
- PropertyPushdownHelper.cs
- GroupStyle.cs
- Tablet.cs
- CompareInfo.cs
- XAMLParseException.cs
- JapaneseLunisolarCalendar.cs
- GiveFeedbackEvent.cs
- ProcessHostFactoryHelper.cs
- AmbientLight.cs
- StringStorage.cs
- CompoundFileStreamReference.cs
- NavigationPropertyEmitter.cs
- ServiceHostFactory.cs
- DbQueryCommandTree.cs
- ContainerUIElement3D.cs
- QueryContinueDragEventArgs.cs
- ListView.cs
- HttpPostLocalhostServerProtocol.cs
- JoinCqlBlock.cs
- Int32Converter.cs
- ArrayElementGridEntry.cs
- HttpProtocolImporter.cs
- ProcessInfo.cs
- XmlSerializerObjectSerializer.cs
- ToolCreatedEventArgs.cs
- LockCookie.cs
- BitmapEffectDrawingContextState.cs
- EventEntry.cs
- DeliveryRequirementsAttribute.cs
- XmlSchemaImport.cs
- EventSourceCreationData.cs
- LayoutExceptionEventArgs.cs
- ChannelManager.cs
- TextBlockAutomationPeer.cs
- RegexCompilationInfo.cs
- Mapping.cs
- RangeValidator.cs
- SqlBuffer.cs
- DocumentGrid.cs
- XmlAnyElementAttribute.cs