Forwarded from Врен о Японии для туриста
Увидеть желтый синкансен на японском вокзале – это хорошая примета! Поэтому суперэкспресс на фото фотографируют не только иностранные туристы, но и все подряд.
Такой поезд в народе называют Doctor Yellow, и он предназначен для тестирования железнодорожных путей. Пассажиров на нем нет, зато есть целый арсенал специальных датчиков. Во время тестирования он иногда разгоняется аж до 440 км/ч!
Желтых синкансенов нет ни в одном расписании, повезет – увидите (я вот ни разу не видел)! Отсюда (а также потому что желтый цвет символизирует счастье) и поверье, что встреча с таким поездом приносит удачу.
Такой поезд в народе называют Doctor Yellow, и он предназначен для тестирования железнодорожных путей. Пассажиров на нем нет, зато есть целый арсенал специальных датчиков. Во время тестирования он иногда разгоняется аж до 440 км/ч!
Желтых синкансенов нет ни в одном расписании, повезет – увидите (я вот ни разу не видел)! Отсюда (а также потому что желтый цвет символизирует счастье) и поверье, что встреча с таким поездом приносит удачу.
❤13
Осторожно, если вы оставляете комментарии под моими постами — я могу найти ваш публичный блог и что-то с него репостнуть
❤6😱6👍3❤🔥2
Forwarded from Какой я сегодня кролик? (Totally Animated Rabbit)
*(ava + 5)
Есть такой стиль анимации "тотальная". Это когда в кадре двигаются не только персонажи, но ещё и задний фон, меняется перспектива как в фильме. В итоге каждый кадр надо перерисовывать с нуля. Тотальная анимация является самым сложным видом анимации, требующим сильной проработки взаимного расположения объектов и прочих деталей.
Не смотря на все сложности, в СССР сняли короткометражку с использованием тотальной анимации. Был 1986 год, так что естественно всё это рисовалось от руки.
https://youtu.be/I5DofuztDUg
Соответственно, у меня на аве кадр из этого мультфильма.
Ну и префикс "Totally Animated" в честь стиля анимации.
Есть такой стиль анимации "тотальная". Это когда в кадре двигаются не только персонажи, но ещё и задний фон, меняется перспектива как в фильме. В итоге каждый кадр надо перерисовывать с нуля. Тотальная анимация является самым сложным видом анимации, требующим сильной проработки взаимного расположения объектов и прочих деталей.
Не смотря на все сложности, в СССР сняли короткометражку с использованием тотальной анимации. Был 1986 год, так что естественно всё это рисовалось от руки.
https://youtu.be/I5DofuztDUg
Соответственно, у меня на аве кадр из этого мультфильма.
Ну и префикс "Totally Animated" в честь стиля анимации.
👍6❤1
Forwarded from senk0n spam
Кстати, почему всё ещё не сделали анимированный эмодзи с тем оригинальным кончающим баклажаном
🍌9🌭4🐳2❤1👍1👎1🤮1💩1🤡1
Блог*
https://news.1rj.ru/str/inside_microwave/1481
Telegram
Telegram Info English
Petition to Return the Revoked Addresses of Telegram Channels
On August 19, Telegram revoked the public addresses of millions of channels around the world without warning their owners.
Those channels were often used as personal portfolios, public archives…
On August 19, Telegram revoked the public addresses of millions of channels around the world without warning their owners.
Those channels were often used as personal portfolios, public archives…
👍4🥴1
Forwarded from Experimental chill
Рубрика: интересные компиляторы
Поговорим просто про сложение. На x86 сложение имеет 2 операнда
Когда вы складываете несколько чисел подряд (скажем, для простоты 4 числа x1 = x1 + x2 + x3 + x4), то это делается в 3 инструкции
Такие оптимизации называются tree reduction, чтобы первые две операции исполнялись параллельно в процессоре, так как у них нет зависимости. В итоге такие операции занимают 2 цикла вместо 3.
К сожалению, так как в x86 сложение принимает только 2 операнда, так сделать не получится, либо надо складывать числа как x1 += x2, x3, x4 (цепочка из 3), либо складывать x3 += x4, что не всегда хочется или можно (скажем, менять x2, x3, x4 не хочется). Есть инструкция lea, но на x86 не всегда хватает регистров, чтобы сделать это быстро, поэтому в целом tree reduction не очень применяется.
Так вот, так как clang слишком сильно и годами оптимизировался Долиной под x86, такие сложения редко оптимизировались в целом и оставались просто через add.
И да, clang как-то слишком топорно оптимизирует сложения 4 чисел на Arm, где у нас 16 регистров вообще
То есть цепочка из 3, когда увидел, прям ощутились оптимизации, на которые забили, когда смотрели на код x86. И такие вещи забавно прослеживаются, когда смотришь декомпиляцию clang под Arm -- много оптимизаций или их отсутствие как на платформе x86.
GCC, кстати получше это делает
Интересная заключительная мораль в том, что мы даже сложения чисел не можем адекватно соптимизировать в 2022. Ну бывает, что ж
Поиграться: https://gcc.godbolt.org/z/1nozoz1M4
Поговорим просто про сложение. На x86 сложение имеет 2 операнда
addq %reg1, %reg2, что означает reg2 += reg1. На ARM сложение имеет 3 операнда add x3, x2, x1, что означает x3 = x1 + x2.Когда вы складываете несколько чисел подряд (скажем, для простоты 4 числа x1 = x1 + x2 + x3 + x4), то это делается в 3 инструкции
x5 = x1 + x2
x6 = x3 + x4
x1 = x5 + x6
Такие оптимизации называются tree reduction, чтобы первые две операции исполнялись параллельно в процессоре, так как у них нет зависимости. В итоге такие операции занимают 2 цикла вместо 3.
К сожалению, так как в x86 сложение принимает только 2 операнда, так сделать не получится, либо надо складывать числа как x1 += x2, x3, x4 (цепочка из 3), либо складывать x3 += x4, что не всегда хочется или можно (скажем, менять x2, x3, x4 не хочется). Есть инструкция lea, но на x86 не всегда хватает регистров, чтобы сделать это быстро, поэтому в целом tree reduction не очень применяется.
Так вот, так как clang слишком сильно и годами оптимизировался Долиной под x86, такие сложения редко оптимизировались в целом и оставались просто через add.
И да, clang как-то слишком топорно оптимизирует сложения 4 чисел на Arm, где у нас 16 регистров вообще
add x13, x13, x9
add x13, x13, x10
add x13, x13, x12
То есть цепочка из 3, когда увидел, прям ощутились оптимизации, на которые забили, когда смотрели на код x86. И такие вещи забавно прослеживаются, когда смотришь декомпиляцию clang под Arm -- много оптимизаций или их отсутствие как на платформе x86.
GCC, кстати получше это делает
add x1, x4, x1
add x6, x3, x2
add x1, x6, x1
Интересная заключительная мораль в том, что мы даже сложения чисел не можем адекватно соптимизировать в 2022. Ну бывает, что ж
Поиграться: https://gcc.godbolt.org/z/1nozoz1M4
gcc.godbolt.org
Compiler Explorer - C++
// We're going to do these two things in almost every function. Prevents
// compiler from optimizing away.
#define DECLARE5 \
uint64_t data1, data2, data3, data4, data5;
#define FAKE_DEP5 \
asm volatile("" \
: "+r" (data1), "+r" (data2), "+r"…
// compiler from optimizing away.
#define DECLARE5 \
uint64_t data1, data2, data3, data4, data5;
#define FAKE_DEP5 \
asm volatile("" \
: "+r" (data1), "+r" (data2), "+r"…
👍9