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
- DataGridTableStyleMappingNameEditor.cs
- EncryptedXml.cs
- SqlTriggerContext.cs
- VersionedStreamOwner.cs
- SecurityAlgorithmSuiteConverter.cs
- ConfigsHelper.cs
- TypeConstant.cs
- ButtonFlatAdapter.cs
- FrameworkElementAutomationPeer.cs
- Soap12FormatExtensions.cs
- SafeProcessHandle.cs
- CssTextWriter.cs
- XmlBinaryReader.cs
- InheritablePropertyChangeInfo.cs
- LinearGradientBrush.cs
- FilterQuery.cs
- SamlSecurityToken.cs
- DbConnectionHelper.cs
- Pair.cs
- SafeSecurityHelper.cs
- ListViewItem.cs
- SqlProfileProvider.cs
- XmlSchemaType.cs
- OdbcCommandBuilder.cs
- ScriptBehaviorDescriptor.cs
- AttributeUsageAttribute.cs
- ReferenceConverter.cs
- PathGeometry.cs
- FontFaceLayoutInfo.cs
- PersonalizationStateInfoCollection.cs
- WebPartConnectionsCancelEventArgs.cs
- TableStyle.cs
- TrustManagerMoreInformation.cs
- SystemIPv4InterfaceProperties.cs
- ActivityDesigner.cs
- XmlNamespaceManager.cs
- ModulesEntry.cs
- Thread.cs
- DateTimeFormat.cs
- ToolBarButton.cs
- HatchBrush.cs
- LinqDataSource.cs
- CookieProtection.cs
- MonitorWrapper.cs
- LinkedList.cs
- FragmentQueryKB.cs
- SafeNativeMethods.cs
- AssociativeAggregationOperator.cs
- UsernameTokenFactoryCredential.cs
- TextEndOfParagraph.cs
- DocumentSequenceHighlightLayer.cs
- QueryOutputWriterV1.cs
- TrustLevel.cs
- CodeDirectiveCollection.cs
- DataColumn.cs
- DataTableClearEvent.cs
- WindowsAltTab.cs
- DataBinder.cs
- shaperfactoryquerycachekey.cs
- InternalControlCollection.cs
- BuildProvider.cs
- DataGridViewSelectedCellCollection.cs
- VectorAnimation.cs
- IndexerNameAttribute.cs
- StoreItemCollection.cs
- Activity.cs
- DockAndAnchorLayout.cs
- GridViewDeleteEventArgs.cs
- ClientData.cs
- DataIdProcessor.cs
- Error.cs
- ControlBuilderAttribute.cs
- DbExpressionVisitor.cs
- ThemeDirectoryCompiler.cs
- OutKeywords.cs
- JsonXmlDataContract.cs
- DataRecordInfo.cs
- ThreadStateException.cs
- RecommendedAsConfigurableAttribute.cs
- ObjectViewFactory.cs
- MenuItemCollection.cs
- ExpressionBuilder.cs
- InputLanguageSource.cs
- RemoteWebConfigurationHost.cs
- _SingleItemRequestCache.cs
- KeyBinding.cs
- _LoggingObject.cs
- PropertyChange.cs
- WriteLine.cs
- KeyConstraint.cs
- X509ChainElement.cs
- WebPartConnectionsDisconnectVerb.cs
- UnsafeNativeMethodsTablet.cs
- Vector3DAnimation.cs
- DivideByZeroException.cs
- MergeFailedEvent.cs
- XmlWriterSettings.cs
- ComponentDispatcher.cs
- EntityDataSource.cs
- If.cs