File: ParallelMergeOptions.cs

package info (click to toggle)
mono 6.12.0.199%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 1,296,836 kB
  • sloc: cs: 11,181,803; xml: 2,850,076; ansic: 699,709; cpp: 123,344; perl: 59,361; javascript: 30,841; asm: 21,853; makefile: 20,405; sh: 15,009; python: 4,839; pascal: 925; sql: 859; sed: 16; php: 1
file content (63 lines) | stat: -rw-r--r-- 2,473 bytes parent folder | download | duplicates (7)
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
    }
}