Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PolyQuadraticBezierSegment.cs
- Adorner.cs
- PathData.cs
- DataRowCollection.cs
- DataGridTable.cs
- SplitterEvent.cs
- Token.cs
- LinearQuaternionKeyFrame.cs
- MachineKey.cs
- Binding.cs
- SqlConnectionPoolProviderInfo.cs
- bindurihelper.cs
- basenumberconverter.cs
- WebUtil.cs
- OracleConnectionString.cs
- IncomingWebResponseContext.cs
- PublisherMembershipCondition.cs
- TypeDescriptor.cs
- CompensableActivity.cs
- MeasurementDCInfo.cs
- DynamicDataManager.cs
- LinqDataSourceDeleteEventArgs.cs
- Visual3D.cs
- ButtonBaseAdapter.cs
- CellTreeSimplifier.cs
- AncestorChangedEventArgs.cs
- CopyNodeSetAction.cs
- RequestNavigateEventArgs.cs
- DefaultParameterValueAttribute.cs
- PropertyEmitterBase.cs
- ExtractCollection.cs
- WebMethodAttribute.cs
- IsolatedStorageFilePermission.cs
- SourceFileInfo.cs
- SqlFileStream.cs
- EdmFunction.cs
- ImmutableObjectAttribute.cs
- Triplet.cs
- PenLineJoinValidation.cs
- ChannelBinding.cs
- XPathCompileException.cs
- Task.cs
- TableRow.cs
- DefaultValueTypeConverter.cs
- CommandDesigner.cs
- MetadataUtil.cs
- TimeZone.cs
- InputScopeNameConverter.cs
- WindowsComboBox.cs
- FormatterConverter.cs
- PropertyValueChangedEvent.cs
- ThrowHelper.cs
- BindingMAnagerBase.cs
- InfiniteIntConverter.cs
- GridSplitter.cs
- XmlTextReader.cs
- TypeConverter.cs
- ToolStrip.cs
- XmlSchemaSequence.cs
- CustomExpressionEventArgs.cs
- BackStopAuthenticationModule.cs
- Help.cs
- DataListGeneralPage.cs
- PageAsyncTask.cs
- ReflectPropertyDescriptor.cs
- ChangeDirector.cs
- SectionInput.cs
- SplitterPanel.cs
- WebCodeGenerator.cs
- SectionInput.cs
- WindowsFormsSectionHandler.cs
- mansign.cs
- DataPagerFieldCommandEventArgs.cs
- DPTypeDescriptorContext.cs
- XmlSchemaGroupRef.cs
- ListChangedEventArgs.cs
- GridViewRowCollection.cs
- DataViewManager.cs
- PeerDuplexChannelListener.cs
- KeyedHashAlgorithm.cs
- XDRSchema.cs
- PenCursorManager.cs
- ComponentResourceKeyConverter.cs
- RouteItem.cs
- RbTree.cs
- ReflectionHelper.cs
- ValidatorCompatibilityHelper.cs
- ISAPIWorkerRequest.cs
- StickyNote.cs
- XmlSerializerNamespaces.cs
- MenuTracker.cs
- TextureBrush.cs
- ExpanderAutomationPeer.cs
- ExtendedPropertiesHandler.cs
- CharEntityEncoderFallback.cs
- ChannelFactoryRefCache.cs
- EnumerableRowCollection.cs
- WorkflowExecutor.cs
- HandlerMappingMemo.cs
- RoleGroupCollection.cs