Здравствуйте, Pavel Dvorkin, Вы писали:
PD>А мы на этапе ожидания феерических результатов.
Пока получается выделить катастрофически мало времени — на работе нагрузку нагрузили.
Кроме того, есть риск, что вообще мега-красота не выйдет: компилятор C# работает не так, как я про него думал
А кроме Липперта мало кто пишет про то, как оно там работает "на самом деле".
PD>Для затравки, кстати — в своем коде я оптимизировал вот этот кусочек. Не понравился мне тут квадратный корень, да и деления тоже.
PD> std = sqrt((sqdiff — diff*diff/area)/(area-1));
PD> threshold = mean*(1+k*((std/128)-1));
PD> if(gray_image_ptr[j][i] <= threshold)
PD> bin_image_ptr[j][i] = 0;
PD> else
PD> bin_image_ptr[j][i] = 255;
Ну, это можно оставить на потом. Ну, там, заменит diff/area на уже посчитанный mean; заменить деление на area-1 на area, т.к. в интересующих нас случаях эффект пренебрежимо мал (полпроцента для w=15 и меньше 0.1% для w=25).
PD>В результате получилось нечто вообще плохо читаемое и малопонятное, но работало на 30% быстрее. Это была последняя оптимизация — после введения потоков и прочего.
Ну, после Кармаковского кода меня трудно таким удивить.
PD>К чему я это ? А просто к тому, что когда от такого алгоритма требуется максимальная скорость — это предельно далеко от задачи "напишите мне красиво и изящно".
Так не может быть
Хорошее инженерное решение — всегда красиво.
Ладно, отложим это до момента, когда будет что предъявить