1. Не думаю что тут уместно нравится, не нравится!
2. В любом эксперименте эсть погрешность. В данном случае, если Вы дочитаете чуть ниже, увидете не более 10^-15 относительная погрешность.
Эсли такое и случится, то думаю скорее всего придется переписать уравнения Максвелла для массы фотона чуть больше 0.
1. СТО стоит всего на двух постулатах, приняв их и зная школьную геометрию Вам хватит сил чтоб вывести практически все выводы (Сокращения длины, относительность времени ну и кинетическую енергию), и сможете сами убедится что Ваши выводы не верны!
2. Так же стоит понять что скорость електромагнитных волн никак не влияет на максимальную скорость обьектов в нашей вселенной, просто так получилось что мы эту константу для нашего мира назвали скоростью света в вакууме. Скорость света такая, потому что маса покоя фотона равна нулю!
3. Допустим Вы правы, будем рассуждать в Ваших рамках, тогда получается что тот же БАК не правильно расчитан, так как на эфект Вавилова — Черенкова ушло бы большинство енергии (на основание этого кстати как раз есть експеременты для высокоенергитечских лучей, и как раз с Вашим вопросом) да и правильно подобрать електромагнитное поле для разгона бы не получалось!
1. Инициализацию нужно проводить в [GlobalSetup], ваши моки и тому подобное!
1.a Нету смысла в цикле
for (int i = 0; i < N; i++)
, этим занимается Benchmarkdotnet!
2.b Немогу скзать точно, но думаю асинк-машину стоит убрать для бенчмаркинга єтой задачи!
2. в FastContactHydrator используете ConcurrentDictionary, в SlowContactHydrator массив и потом примитивный проход (так не честно :), ConcurrencyDictionary нелинейно пробегает по связаному списку, смотрит в разные массивы, Для массива наоборот линейный пробег, плюс енумератор структурка. Используются оптимизации. Вообще смысла нету в Вашем случае в Collections.Concurrent!
3. Если создаете словарь, используйте его по назанчению (DefaultRawStringParser), Хотя как по мне лучше подготовить словарь для ContactHydratorBase._mapSchemas
У Вас ошибка в листинге кода: TestNative и TestDelegateNative используют метод SaveString, но не через вызов делегата NativeDelegate.
Не знаю какой прирост даст в данном примере, но думаю статик филды делегатов лучше кешировать в локальную переменную, для чистоты теста!
Intel Core i5-6440HQ CPU 2.60GHz (Skylake), 1 CPU, 4 logical and 4 physical cores
.NET Core SDK=2.2.110
[Host] : .NET Core 2.2.8 (CoreCLR 4.6.28207.03, CoreFX 4.6.28208.02), X64 RyuJIT
DefaultJob : .NET Core 2.2.8 (CoreCLR 4.6.28207.03, CoreFX 4.6.28208.02), X64 RyuJIT
Для 100_000: 6 мин,
если преждевременно нормализировать данные 2 мин.
Загрузил все ядра процессора, плюс использовал SIMD.
Учитывая стоимость видяшки, не такой большой прирост получился
К обфускации стоит подходить очень осторожно. Уже на этом примере заметно, насколько медленнее становится код((( Бедный JIT(
2. В любом эксперименте эсть погрешность. В данном случае, если Вы дочитаете чуть ниже, увидете не более 10^-15 относительная погрешность.
Эсли такое и случится, то думаю скорее всего придется переписать уравнения Максвелла для массы фотона чуть больше 0.
2. Так же стоит понять что скорость електромагнитных волн никак не влияет на максимальную скорость обьектов в нашей вселенной, просто так получилось что мы эту константу для нашего мира назвали скоростью света в вакууме. Скорость света такая, потому что маса покоя фотона равна нулю!
3. Допустим Вы правы, будем рассуждать в Ваших рамках, тогда получается что тот же БАК не правильно расчитан, так как на эфект Вавилова — Черенкова ушло бы большинство енергии (на основание этого кстати как раз есть експеременты для высокоенергитечских лучей, и как раз с Вашим вопросом) да и правильно подобрать електромагнитное поле для разгона бы не получалось!
Пропертя DebugView от Expression, суто для дебага того что получилось
1.a Нету смысла в цикле , этим занимается Benchmarkdotnet!
2.b Немогу скзать точно, но думаю асинк-машину стоит убрать для бенчмаркинга єтой задачи!
2. в FastContactHydrator используете ConcurrentDictionary, в SlowContactHydrator массив и потом примитивный проход (так не честно :), ConcurrencyDictionary нелинейно пробегает по связаному списку, смотрит в разные массивы, Для массива наоборот линейный пробег, плюс енумератор структурка. Используются оптимизации. Вообще смысла нету в Вашем случае в Collections.Concurrent!
3. Если создаете словарь, используйте его по назанчению (DefaultRawStringParser), Хотя как по мне лучше подготовить словарь для ContactHydratorBase._mapSchemas
Он более акуратно проведет тесты, плюс выдаст ошибку измерений!
Нравится простота в использовании.
Не знаю какой прирост даст в данном примере, но думаю статик филды делегатов лучше кешировать в локальную переменную, для чистоты теста!