Сообщение Re[181]: Тормознутость и кривость linq. Compile-time EDSL DB от 10.07.2016 22:07
Изменено 15.07.2016 14:45 Serginio1
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Километровый флейм тут (да и соседней теме) вырос от нежелания признать что простейший алгоритм вылился в несколько сот строк boilerplate, причём плохо поддерживаемых, ибо много копипасты + текстовая кодогенерация.
EP>Аргументация же оппонентов постоянно витает где-то в далеких от исходного тезиса темах, типа экономической целесообразности, наличия мух в голове авторов кода, редкости таких ситуаций, метапрограммирования на макросах и шаблонах и т.п.
Еще раз. Тебе я привел кучу примеров. Приведу еще один
Получим тот же перфоманс без копи-пасте.
Приводи свой алгоритм на C++ который в 100 раз меньше.
EP>Километровый флейм тут (да и соседней теме) вырос от нежелания признать что простейший алгоритм вылился в несколько сот строк boilerplate, причём плохо поддерживаемых, ибо много копипасты + текстовая кодогенерация.
EP>Аргументация же оппонентов постоянно витает где-то в далеких от исходного тезиса темах, типа экономической целесообразности, наличия мух в голове авторов кода, редкости таких ситуаций, метапрограммирования на макросах и шаблонах и т.п.
Еще раз. Тебе я привел кучу примеров. Приведу еще один
//if (value == null)
// source=source.Where(x=>x!=null); // Уберем фильтр на Linq из-за тормоза делегата
bool isfirst=true;
bool fl=0;
foreach(var item in source)
{
// Поставим фильтр сюда
if (isNullable && value == null) continue;
var x = selector(item );
if (isFirst)
{
isFirst=false;
fl=-1;
}
else
fl=comparer.Compare(item, value);
if (fl< 0)
{
value = x;
item = e.Current;
}
}
if (isFirst)
{
// по их алгоритму при пустом списке вызвать исключение для Nullable
if (isNullable)
throw NoElementsException();
else
eturn default(TSource); // вернуть default при пустом списке
}
return item;
Получим тот же перфоманс без копи-пасте.
Приводи свой алгоритм на C++ который в 100 раз меньше.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Километровый флейм тут (да и соседней теме) вырос от нежелания признать что простейший алгоритм вылился в несколько сот строк boilerplate, причём плохо поддерживаемых, ибо много копипасты + текстовая кодогенерация.
EP>Аргументация же оппонентов постоянно витает где-то в далеких от исходного тезиса темах, типа экономической целесообразности, наличия мух в голове авторов кода, редкости таких ситуаций, метапрограммирования на макросах и шаблонах и т.п.
Еще раз. Тебе я привел кучу примеров. Приведу еще один
Получим тот же перфоманс без копи-пасте.
Приводи свой алгоритм на C++ который в 100 раз меньше.
EP>Километровый флейм тут (да и соседней теме) вырос от нежелания признать что простейший алгоритм вылился в несколько сот строк boilerplate, причём плохо поддерживаемых, ибо много копипасты + текстовая кодогенерация.
EP>Аргументация же оппонентов постоянно витает где-то в далеких от исходного тезиса темах, типа экономической целесообразности, наличия мух в голове авторов кода, редкости таких ситуаций, метапрограммирования на макросах и шаблонах и т.п.
Еще раз. Тебе я привел кучу примеров. Приведу еще один
//if (value == null)
// source=source.Where(x=>x!=null); // Уберем фильтр на Linq из-за тормоза делегата
bool isfirst=true;
bool fl=0;
foreach(var item in source)
{
// Поставим фильтр сюда
if (isNullable && item == null) continue;
var x = selector(item );
if (isFirst)
{
isFirst=false;
fl=-1;
}
else
fl=comparer.Compare(item, value);
if (fl< 0)
{
value = x;
item = e.Current;
}
}
if (isFirst)
{
// по их алгоритму при пустом списке вызвать исключение для Nullable
if (isNullable)
throw NoElementsException();
else
eturn default(TSource); // вернуть default при пустом списке
}
return item;
Получим тот же перфоманс без копи-пасте.
Приводи свой алгоритм на C++ который в 100 раз меньше.