public TestParameters(API api, StartIndexBase startIndexBase, int?startIndexOffset = null) { Api = api; StartIndexBase = startIndexBase; StartIndexOffset = startIndexOffset ?? DEFAULT_STARTINDEXOFFSET; if (api == API.For64) { // StartIndexBase.Int64 was set to -1 since Enum can't take a Int64.MaxValue. Fixing this below. long indexBase64 = (startIndexBase == StartIndexBase.Int64) ? long.MaxValue : (long)startIndexBase; StartIndex64 = indexBase64 + StartIndexOffset; } else { // startIndexBase must not be StartIndexBase.Int64 StartIndex = (int)startIndexBase + StartIndexOffset; } WorkloadPattern = WorkloadPattern.Similar; // setting defaults. Count = 0; ChunkSize = -1; StateOption = ActionWithState.None; LocalOption = ActionWithLocal.None; ParallelOption = WithParallelOption.None; //partitioner options ParallelForeachDataSourceType = DataSourceType.Collection; PartitionerType = PartitionerType.IListBalancedOOB; }
public static OrderablePartitioner <Tuple <int, int> > Create(PartitionerType partitionerName, int from, int to, int chunkSize = -1) { switch (partitionerName) { case PartitionerType.RangePartitioner: return((chunkSize == -1) ? Partitioner.Create(from, to) : Partitioner.Create(from, to, chunkSize)); default: break; } return(null); }
public static void TestForeach_Partitioner(int count, int chunkSize, PartitionerType partitionerType, WithParallelOption parallelOption, ActionWithLocal localOption, ActionWithState stateOption) { var parameters = new TestParameters(API.Foreach, StartIndexBase.Zero) { Count = count, ChunkSize = chunkSize, PartitionerType = partitionerType, ParallelForeachDataSourceType = DataSourceType.Partitioner, ParallelOption = parallelOption, LocalOption = localOption, StateOption = stateOption, }; var test = new ParallelForTest(parameters); test.RealRun(); }
public static OrderablePartitioner <T> Create(PartitionerType partitionerName, IEnumerable <T> dataSource) { switch (partitionerName) { case PartitionerType.IListBalancedOOB: return(Partitioner.Create(new List <T>(dataSource), true)); case PartitionerType.ArrayBalancedOOB: return(Partitioner.Create(new List <T>(dataSource).ToArray(), true)); case PartitionerType.IEnumerableOOB: return(Partitioner.Create(dataSource)); case PartitionerType.IEnumerable1Chunk: return(Partitioner.Create <T>(dataSource, EnumerablePartitionerOptions.NoBuffering)); default: break; } return(null); }