0 голосов
спросил от в категории CVBNET
Дэйв на месте ... Чтобы привести пример, я провел тест на 10 000 предметов, используя код 1. Дэйва; 2. версия Linq; 3. версия PLinq. Ниже приведен код:
<Benchmark(Baseline:=True)> Public Sub Execute()     Dim diffArray = New Long(maxSize - 1 - 1) {}     For i As Integer = 0 To diffArray.Length - 1         diffArray(i) = LongArray(i + 1) - LongArray(i)     Next End Sub <Benchmark> Public Sub ExecuteLinq()     Dim diffArray As Long() = LongArray.Skip(1).[Select](Function(x, i) LongArray(i) - x).ToArray() End Sub <Benchmark> Public Sub ExecutePLinq()     Dim diffArray As Long() = LongArray.Skip(1).[Select](Function(x, i) LongArray(i) - x).AsParallel().AsOrdered().ToArray() End Sub

И вот результаты теста:
// * Summary * BenchmarkDotNet=v0.11.1, OS=Windows 10.0.17134.228 (1803/April2018Update/Redstone4) Intel Core i7-4980HQ CPU 2.80GHz (Haswell), 1 CPU, 8 logical and 4 physical cores   [Host]     : .NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3132.0   DefaultJob : .NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3132.0        Method |        Mean |     Error |    StdDev | Scaled | ScaledSD | ------------- |------------:|----------:|----------:|-------:|---------:|       Execute |    22.02 us | 0.2142 us | 0.2003 us |   1.00 |     0.00 |   ExecuteLinq |   297.39 us | 1.6327 us | 1.5272 us |  13.51 |     0.14 |  ExecutePLinq | 1,210.37 us | 6.4961 us | 5.7586 us |  54.98 |     0.54 | // * Legends *   Mean     : Arithmetic mean of all measurements   Error    : Half of 99.9% confidence interval   StdDev   : Standard deviation of all measurements   Scaled   : Mean(CurrentBenchmark) / Mean(BaselineBenchmark)   ScaledSD : Standard deviation of ratio of distribution of [CurrentBenchmark] and [BaselineBenchmark]   1 us     : 1 Microsecond (0.000001 sec)

Надеюсь, что это помогает! :)

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
0 голосов
ответил от
Списки немного замедлят работу.

Самое быстрое, что вы собираетесь запустить, - это ваш Fox/Next но сначала предопределите свой DiffArray до размера, необходимого для хранения всех значений, которые вы собираетесь рассчитать, и размер вашего LongArray - 1.
Dim DiffArray(LongArray.Count - 1) As Long For i As Integer = 0 To LongArray.Count - 1     Dim Diff As Long = LongArray(i + 1) - LongArray(i)     DiffArray(i) = Diff Next

Категории

Добро пожаловать на сайт DraftingCode Q&A (ИТ ответы), где вы можете задавать вопросы и получать ответы от других членов сообщества.

Похожие вопросы

0 голосов
0 ответов
0 голосов
0 ответов
0 голосов
0 ответов
спросил 02 Авг от jochen arndt в категории CVBNET
0 голосов
0 ответов
спросил 05 Авг от richard maccutchan в категории CVBNET
0 голосов
0 ответов
спросил 26 Июль от gerry schmitz в категории CVBNET
...