Re: Итераторы
От: Sinix  
Дата: 16.06.20 07:49
Оценка: +2
Здравствуйте, StatujaLeha, Вы писали:

SL>Приветствую!


Лайк и за реализацию, и за код, хорошо сделано

Насчёт втащить в CJ я в раздумьях
С одной стороны имеем 2x выигрыш в бенчмарке, с другой — кучу кода вместо
        [Pure, NotNull, LinqTunnel]
        private static IEnumerable<T> ConcatCore<T>([NotNull] IEnumerable<T> source, T element)
        {
            foreach (var item in source)
                yield return item;
            yield return element;
        }

с третьей — в core 3.1 разница уже не так впечатляет
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.900 (1909/November2018Update/19H2)
Intel Core i7-8700K CPU 3.70GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
.NET Core SDK=3.1.300
  [Host]        : .NET Core 3.1.4 (CoreCLR 4.700.20.20201, CoreFX 4.700.20.22101), X64 RyuJIT
  .NET Core 3.1 : .NET Core 3.1.4 (CoreCLR 4.700.20.20201, CoreFX 4.700.20.22101), X64 RyuJIT

Job=.NET Core 3.1  Runtime=.NET Core 3.1

|             Method |      Mean |     Error |    StdDev |    Median |
|------------------- |----------:|----------:|----------:|----------:|
|   ReferenceCodeJam |  25.34 ms |  0.141 ms |  0.110 ms |  25.36 ms |
|        ReferenceMy |  12.04 ms |  0.087 ms |  0.082 ms |  12.01 ms |
| Referencex5CodeJam | 131.43 ms |  2.199 ms |  3.154 ms | 131.42 ms |
|      Referencex5My |  42.65 ms |  0.694 ms |  0.580 ms |  42.75 ms |
|         intCodeJam |  23.51 ms |  0.217 ms |  0.193 ms |  23.50 ms |
|              intMy |  19.04 ms |  0.115 ms |  0.096 ms |  19.06 ms |
|       intx5CodeJam | 105.39 ms |  6.257 ms | 16.373 ms | 100.47 ms |
|            intx5My |  71.85 ms |  1.427 ms |  1.805 ms |  71.79 ms |
|        longCodeJam |  23.76 ms |  0.231 ms |  0.216 ms |  23.68 ms |
|             longMy |  20.00 ms |  0.184 ms |  0.172 ms |  19.97 ms |
|      longx5CodeJam | 135.20 ms | 15.707 ms | 46.314 ms | 110.50 ms |
|           longx5My |  80.00 ms |  4.103 ms | 10.882 ms |  76.13 ms |


Ну, т.е. конкретно этот метод мы втащим, не проблема. А с остальными хэлперами для IEnumerable чего делать?
Переписывать всё — не вариант, код итераторов достаточно тяжёлый бывает. Переписать выборочно можно, но кто потом этот код будет поддерживать?

Короче, я в раздумьях и не готов топить ни за, ни против.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.