1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
//
// ParallelMergeOptions.cs
//
// <OWNER>igoro</OWNER>
//
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
namespace System.Linq
{
/// <summary>
/// Specifies the preferred type of output merge to use in a query. This is a hint only, and may not be
/// respected by the system when parallelizing all queries.
/// </summary>
/// <remarks>
/// <para>
/// Use <b>NotBuffered</b> for queries that will be consumed and output as streams, this has the lowest latency
/// between beginning query execution and elements being yielded. For some queries, such as those involving a
/// sort (OrderBy, OrderByDescending), buffering is essential and a hint of NotBuffered or AutoBuffered will
/// be ignored.
/// </para>
/// <para>
/// Use <b>AutoBuffered</b> for most cases; this is the default. It strikes a balance between latency and
/// overall performance.
/// </para>
/// <para>
/// Use <b>FullyBuffered</b> for queries when the entire output can be processed before the information is
/// needed. This option offers the best performance when all of the output can be accumulated before yielding
/// any information, though it is not suitable for stream processing or showing partial results mid-query.
/// </para>
/// </remarks>
public enum ParallelMergeOptions
{
/// <summary>
/// Use the default merge type, which is AutoBuffered.
/// </summary>
Default = 0,
/// <summary>
/// Use a merge without output buffers. As soon as result elements have been computed,
/// make that element available to the consumer of the query.
/// </summary>
NotBuffered = 1,
/// <summary>
/// Use a merge with output buffers of a size chosen by the system. Results
/// will accumulate into an output buffer before they are available to the consumer of
/// the query.
/// </summary>
AutoBuffered = 2,
/// <summary>
/// Use a merge with full output buffers. The system will accumulate all of the
/// results before making any of them available to the consumer of the query.
/// </summary>
FullyBuffered = 3
}
}
|