А дополнительные двигатели не являются источником шума и дополнительным источником охлаждения? Речь не идет о полноценной 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 для двухбайтовых строк в дотнете и аппроксимации результата по другим бенчам не стал даже читать. Особенно посмеялся с того, что во многих тестируемых языках (баунд)чеки выключены флагом.
Немного меняем пример, и у 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.
clang вставляет cmove только если у него нет PGO (веса бранчей) если в бенчмарке все время будет выбираться одно из условий и только — то никакого cmove не будет вставлено.
А дополнительные двигатели не являются источником шума и дополнительным источником охлаждения? Речь не идет о полноценной 8 ступенчатой коробке с двумя сцеплениями, достаточно хотя бы 2ух передач, а то и трех — тесла теряет эффективность уже после 60-80 км/ч, это хорошо видно на графике момента.
для хорошего офроада достаточно блокировки всех дифференциалов и не надо ничего выдумывать вообще.
Что не придумаешь лишь бы не делать стойкую к высокому моменту коробку передач)))
Вроде в спортивных автомобилях это уже более 10 лет существует, взять какой-нибудь Audi S5 бородатых годов — там на задней оси спортивный активный дифференциал с передачей момента между колесами для поворотов + самый эффективный межосевой дифференциал торсен для передачи момента между осями. И не надо для этого 3 мотора.
Лучше бы тесла занялась разработкой коробки хотя бы дуал спид как у тайкана.
Насколько я знаю в Zen2 ничего не изменилось, они так же обладают каким-то бешенным латенси в порядок раз больше чем в интел. Нам даже пришлось отказываться от оптимизаций некоторых вещей на pdep/pext из-за АМД.
В АМД нет авх512, там явно еще и скомпиленны под генерик цпу, короче, типичный кликбейт бенчмарк от гуманитариев, которым не интересны латенси инструкций, пропускная способность, авх512. не интересны факты что
rep movsbи всякие pdep / pext инструкции жестко всасывают на АМД. Важнее показать показатель $/кол-во ядер.Стоит заметить, что ReferenceSource — это когда-то давно Microsoft выложил часть исходников .NET 4.0 для общего ознакомления. Из них нельзя скомпилировать фраемворк. В исходниках .NET Core ничего из этой "цензуры" нет.
Вроде там должно было быть слово Тайвань
Именно, вы даете юзеру красивую табличку и он делает свои выводы, никто из тех, кто пнул шарп даже не открывал ваш код. Им было не интересно что вы ваш бенчмарк меряет конвертацию больших двухбайтовых утф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 байта кода — то получают огромное пенальти)
А вот это не факт, код кланга бранчлес, так что в зависимости от коллера может быть быстрее или медленее. Тем более с недавними патчами микрокода от Интел все джампы могут в любой момент солидно просесть. Попробуйте изменить свой пример добавив PGO профиль — кодген будет уже другим.
"шланг" ничего не выпиливает — это просто фронтенд, он парсит С++ код в AST и эмитит промежуточный язык LLVM IR, который для данного случая выглядит как два отдельных выражения в разных бейсик блоках (для моего простого кода там их вообще 6) поэтому просто описать это как "ищи шаблон х && y и заменяй" не выйдет. Говорю это, т.к. сам пытался реализовывать такие оптимизации в C# JIT. Ещё раз повторю, пример вполне реален — выполняется два условия — возращаем одно значение, иначе — другое. Вот вам без вложенного ифа: https://godbolt.org/z/SMa2Zu (гцц ведет себя так, как будто я использовал __builtin_expect).
Ну когда у вас будет пруф в виде годболт ссылки, я с удовольствием посмотрю, а пока это неаргументированный спор и раз вам лень его подкреплять хоть каким аругментом — мне тоже лень. Если у вас не получается сделать репро — то может быть не так уж и плохо всё у кланга?
Рекомендую почитать основы компиляторов перед тем как вступать в полемику.
Так поделитесь ими, ваш пример еще более бессмысленный чем мой (+ непонятно где именно там кланг не сработал). Мой реален, просто упрощен для годболта, а так я его достал из продакшена.
это flow-анализ. x && y — это не выражение, а два разных бейзик блока. и кейс вполне реальный. Про "реплейс" — это скорее про гцц, то как он реализует пипхол оптимизации на базе простого DSL (найти-заменить), в llvm же это все с кодом + он постоянно пытается деоптимизировать выражения в более сложные дабы найти возможности для CSE.
Вот из недавнего вам с флоу анализом: https://godbolt.org/z/gWgwj2
У меня хватает примеров когда гцц не мог в то, что умеет кланг/ллвм. Я бы не назвал его слабее гцц.
clang вставляет cmove только если у него нет PGO (веса бранчей) если в бенчмарке все время будет выбираться одно из условий и только — то никакого cmove не будет вставлено.
И как вам там в 2007ом, доллары по 30 уже купили?