Обновить
68
9.3
nagg@Nagg

Разработчик

Отправить сообщение

А дополнительные двигатели не являются источником шума и дополнительным источником охлаждения? Речь не идет о полноценной 8 ступенчатой коробке с двумя сцеплениями, достаточно хотя бы 2ух передач, а то и трех — тесла теряет эффективность уже после 60-80 км/ч, это хорошо видно на графике момента.

для хорошего офроада достаточно блокировки всех дифференциалов и не надо ничего выдумывать вообще.

Что не придумаешь лишь бы не делать стойкую к высокому моменту коробку передач)))

Это означает что кроме перераспределения оборотов колес в повороте, электромоторы могут «направлять» вектор тяги электромобиля по нужной траектории путем ускорения отдельных колес.

Вроде в спортивных автомобилях это уже более 10 лет существует, взять какой-нибудь Audi S5 бородатых годов — там на задней оси спортивный активный дифференциал с передачей момента между колесами для поворотов + самый эффективный межосевой дифференциал торсен для передачи момента между осями. И не надо для этого 3 мотора.


Лучше бы тесла занялась разработкой коробки хотя бы дуал спид как у тайкана.

Насколько я знаю в Zen2 ничего не изменилось, они так же обладают каким-то бешенным латенси в порядок раз больше чем в интел. Нам даже пришлось отказываться от оптимизаций некоторых вещей на pdep/pext из-за АМД.

В АМД нет авх512, там явно еще и скомпиленны под генерик цпу, короче, типичный кликбейт бенчмарк от гуманитариев, которым не интересны латенси инструкций, пропускная способность, авх512. не интересны факты что rep movsb и всякие pdep / pext инструкции жестко всасывают на АМД. Важнее показать показатель $/кол-во ядер.

Стоит заметить, что ReferenceSource — это когда-то давно Microsoft выложил часть исходников .NET 4.0 для общего ознакомления. Из них нельзя скомпилировать фраемворк. В исходниках .NET Core ничего из этой "цензуры" нет.


Подозреваю, что в первом случае было слово «Simple»

Вроде там должно было быть слово Тайвань

Именно, вы даете юзеру красивую табличку и он делает свои выводы, никто из тех, кто пнул шарп даже не открывал ваш код. Им было не интересно что вы ваш бенчмарк меряет конвертацию больших двухбайтовых утф16 строк в два раза меньший утф8, баунд чеки и т.п.

Зачем включать то, в чём вы не потрудились хотя бы аргументы посмотреть? Бонус — не бонус, а в меня уже кинули ссылкой в стиле "смотри в 5 раз медленее азаза".

Почему не отключили в Моно? почему не использовали ллвм бэкенд? Вы просто так добавили без понимания платформы, кто-то посмотрит и сделает ошибочные выводы — за это я не люблю бестолковые бенчмарки. Я с отключенными баундчеками (вернее их даже не надо отключать, достаточно подсказать компилятору простым условием, а он дальше сам их вырежет) и ллвм бэком прогнал ваш цикл близко к перфомансу Си (что не мудрено раз Си в кланге использует тот же ллвм).

Очередной бессмысленный бенчмарк, после Encoding.UTF8.GetBytes для двухбайтовых строк в дотнете и аппроксимации результата по другим бенчам не стал даже читать. Особенно посмеялся с того, что во многих тестируемых языках (баунд)чеки выключены флагом.

CMOV в Skylake ускорили в два раза по летанси (и пропускной?) так что теперь он вроде всегда быстрее: https://raw.githubusercontent.com/xiadz/cmov/master/output/out-6700k.png (https://github.com/xiadz/cmov)


А джампы замедлили патчем (если джам/таргет пересекают случайно границу в 32 байта кода — то получают огромное пенальти)

Немного меняем пример, и у gcc скорее всего будет лучше latency, потому что у clang больше инструкций и все они зависимы (т.е. не распараллеливаются)

А вот это не факт, код кланга бранчлес, так что в зависимости от коллера может быть быстрее или медленее. Тем более с недавними патчами микрокода от Интел все джампы могут в любой момент солидно просесть. Попробуйте изменить свой пример добавив PGO профиль — кодген будет уже другим.

В данном случае это выражение, чем и пользуется шланг выпиливая оттуда && реплейсом

"шланг" ничего не выпиливает — это просто фронтенд, он парсит С++ код в AST и эмитит промежуточный язык LLVM IR, который для данного случая выглядит как два отдельных выражения в разных бейсик блоках (для моего простого кода там их вообще 6) поэтому просто описать это как "ищи шаблон х && y и заменяй" не выйдет. Говорю это, т.к. сам пытался реализовывать такие оптимизации в C# JIT. Ещё раз повторю, пример вполне реален — выполняется два условия — возращаем одно значение, иначе — другое. Вот вам без вложенного ифа: https://godbolt.org/z/SMa2Zu (гцц ведет себя так, как будто я использовал __builtin_expect).


Реальный пример слишком сложно перепастить на godbolt и ещё сделать так, что-бы он его собрал.

Ну когда у вас будет пруф в виде годболт ссылки, я с удовольствием посмотрю, а пока это неаргументированный спор и раз вам лень его подкреплять хоть каким аругментом — мне тоже лень. Если у вас не получается сделать репро — то может быть не так уж и плохо всё у кланга?

Именно выражение

Рекомендую почитать основы компиляторов перед тем как вступать в полемику.


У меня есть множество примеров того как clang ничего не може

Так поделитесь ими, ваш пример еще более бессмысленный чем мой (+ непонятно где именно там кланг не сработал). Мой реален, просто упрощен для годболта, а так я его достал из продакшена.

это flow-анализ. x && y — это не выражение, а два разных бейзик блока. и кейс вполне реальный. Про "реплейс" — это скорее про гцц, то как он реализует пипхол оптимизации на базе простого DSL (найти-заменить), в llvm же это все с кодом + он постоянно пытается деоптимизировать выражения в более сложные дабы найти возможности для CSE.

Вот из недавнего вам с флоу анализом: https://godbolt.org/z/gWgwj2

У меня хватает примеров когда гцц не мог в то, что умеет кланг/ллвм. Я бы не назвал его слабее гцц.

clang вставляет cmove только если у него нет PGO (веса бранчей) если в бенчмарке все время будет выбираться одно из условий и только — то никакого cmove не будет вставлено.

ну или просто почему она не работает, если фреймворк не установлен

И как вам там в 2007ом, доллары по 30 уже купили?

Информация

В рейтинге
737-й
Зарегистрирован
Активность