Вызовы Native под Linux - в чём подвох?
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.10.20 04:16
Оценка:
Всем привет.
Вчера наконец заборол кросс-платформенную сборку для бенчмарков linq2d.
Получил какие-то удивительные результаты.
Вкратце, что происходит: я вызываю пару функций из нативной .dll/.so через интероп.
На винде dll собирается MS VC.
На linux so собирается g++.

Замеряем быстродействие там и там — получаем, что плюсовый код на винде чуточку быстрее аналогичного unsafe-кода на дотнете:
Intel Core i7-6600U CPU 2.60GHz (Skylake), 1 CPU, 4 logical and 2 physical cores
|              CppC4 |  InProcess | InProcessEmitToolchain | p00743.bmp | 125.56 ms | 1.562 ms | 1.385 ms |  0.87 |    0.02 |
|           UnsafeC4 |  InProcess | InProcessEmitToolchain | p00743.bmp | 144.90 ms | 2.675 ms | 2.502 ms |  1.00 |    0.00 |
|          NaturalC4 |  InProcess | InProcessEmitToolchain | p00743.bmp | 284.03 ms | 3.851 ms | 3.006 ms |  1.96 |    0.03 |

На линуксе получаем какой-то сюр:
Intel Xeon Platinum 8171M CPU 2.60GHz, 1 CPU, 2 logical and 2 physical cores
|             Method |   FileName |      Mean |    Error |   StdDev | Ratio | RatioSD |
|------------------- |----------- |----------:|---------:|---------:|------:|--------:|
|              CppC4 | p00743.bmp | 330.92 ms | 1.103 ms | 0.921 ms |  2.73 |    0.03 |
|          NaturalC4 | p00743.bmp | 318.12 ms | 1.053 ms | 0.822 ms |  2.62 |    0.03 |
|           UnsafeC4 | p00743.bmp | 121.07 ms | 1.679 ms | 1.571 ms |  1.00 |    0.00 |

Это там интероп такой дорогой, или это я не сумел включить релизную конфигурацию сборки для g++?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.