Pull to refresh
214
0
gribozavr @gribozavr

Пользователь

Send message
Если операнды — целые числа, то результат отличается даже не «на пределе разрядности».
Тогда у D нет никаких преимуществ перед C++ нет даже в этом случае, если компилятор может заинлайнить, а может и нет (потому что не умеет, потому что эвристика решила что не стоит или по любой другой причине).
А в стандарте написано что инлайнинг обязан произойти? И кстати, у D, насколько я знаю, нет стандарта…
Я и не спорю, но в данном случае, приведённом в статье, всё инлайнится. А случае из вашего комментария — нет. А код в стандартной библиотеке один и тот же. Так что, тут у C++ преимущество: инлайнится когда возможно, и дублирование кода для покрытия обоих случаев не требуется.
> для этого вызывается наша лямбда-функция [...]. Вызывается каждый раз.

Не правда, всё отлично инлайнится.
Большое исследование по первому вопросу labs.ripe.net/Members/emileaben/measuring-world-ipv6-day-comparing-ipv4-and-ipv6-performance (вкратце: время передачи по IPv4 и IPv6 сравнимо).

IPSec в IPv6 обязательное в том смысле, что узел обязательно должен поддерживать IPSec чтобы говорить о поддержке IPv6. Это не значит, что в IPv6 весь трафик шифруется.
Скорее, на доступ в память в соседний NUMA node.
Не соответствует стандарту. std::transform не обязан в функтор кормить элементы по порядку.

Effects: Assigns through every iterator i in the range [result,result + (last1 — first1)) a new corresponding value equal to op(*(first1 + (i — result)) or binary_op(*(first1 + (i — result)), *(first2 + (i — result))).

<source=c>if(fmod(window,2)==0)
fmod для целых чисел да ещё и сравнение на строгое равенство чисел с плавающей запятой…

> C++ edition
и где тут C++? Это си, не более.

На каждый элемент результирующего массива лишние ветвления: особые случаи для начала и конца нужны только в начале и в конце, а основной объём данных должен обрабатываться без этого.

Трюк с вычитанием хорош только если вы уверены что не произойдёт никаких катастрофических округлений.
В Си int foo(void) это функция без аргументов. А int foo() — с аргументами.
Кроме такого базового, там ещё много различных вариантов, оптимизированных под различные наборы векторных команд.
Она будет быстрой если использовать флаги оптимизации компилятора.
Тогда тест нерепрезентативен. Используйте результат как-то, например, считайте их сумму или проверяйте на равенство с 42 и выходите из цикла и т. д.
А где алгоритм с lookup table?
Экспоненциальный относительно длины n, то есть относительно log n.
Загурзились с liveusb/livecd и запустили бы debsums…
Событийные модели. Посмотрите, например, семантику VHDL.

Information

Rating
Does not participate
Location
Украина
Registered
Activity