Касабланка тоже достаточно популярна в мире (как минимум фраза про начало прекрасной дружбы, обыгранная потом у Кустурицы, сразу вспоминается). Вот британские сериалы типа Eastenders или Coronation Street у нас вряд ли кто процитирует.
Например хочется посмотреть на систему в целом (в том числе как железо распознаётся из коробки и управляется из дефолтного GUI) до инсталляции (до которой дело может не дойти).
#include <string>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> m;
for (int i = 0; i < 10000000; i++) m[std::to_string(i)] = i;
int res = 0;
for (const auto& it : m) res += it.second;
return res;
}
против
package main
import (
"os"
"strconv"
)
func main() {
m := make(map[string]int)
for i := 0; i < 10000000; i++ {
m[strconv.Itoa(i)] = i
}
res := 0
for _, val := range m {
res += val
}
os.Exit(res)
}
у меня Go немного быстрее. Понятно, что это скорее тест на рантайм и стандартную библиотеку, чем на кодогенератор.
Например, звук воспроизводился только через динамики, а на подключение наушников система никак не реагировала.
Вот конкретно это для своего ноута и в линуксе до сих пор приходится чинить скриптом при загрузке. Смотрел на MidnightBSD - оно ещё и встроенный WiFi не видит.
Да, обвязочка вокруг FMA там очень весёлая ) Не уверен, что при этом что-то ускоряется.
Просто переаллокации памяти, о которых в основном речь в статье, на мой взгляд скорееlow hanging fruits. Последние наносекунды - это когда основное время в нашем счётном коде, алгоритмические оптимизации применили, очевидные однородные вычисления векторизовали, с локальностью памяти поработали и надо смотреть на использование ресурсов процессора - раскладка по портам и т.д..
Ну да - всё таки если нужна производительность, от многомерного массива ожидается что он аллоцирован один раз последовательным куском, но при этом разные индексы по разному влияют на смещение от начала. В плюсы для этого таки завезли mdspan.
А по сравнению собственно кодогенератора Go (стандартной реализации от гугла) и clang/gcc есть какие-нибудь сравнения? Как там в плане базовых оптимизаций (анроллинг циклов и т.п.), автовекторизации и прочего? Что насчёт выбора последовательности инструкций под конкретную модель процессора (clang/gcc для этого используют описание микроархитектуры в файликах вродеэтих)?
По крайней мере SB16 поддерживает )
На old-games.ru ничего не нашлось?
Про проблемы с перегревом стоило сказать (по многим сайтам пролетело, навскидку здесь).
У меня он сейчас дома на арче - выглядит как минимум удобнее и приятнее гнома. А по тяжести - так CDE тоже монстр ещё тот.
Может что-то пропустил в истории xfce, но сейчас он на gtk
Касабланка тоже достаточно популярна в мире (как минимум фраза про начало прекрасной дружбы, обыгранная потом у Кустурицы, сразу вспоминается). Вот британские сериалы типа Eastenders или Coronation Street у нас вряд ли кто процитирует.
Это скорее попытка учить язык по разговорнику ) Человек хотел узнать, откуда ноги растут, а не просто смысл конкретных цитат.
Переехавший в Штаты знакомый в какой то момент начал читать детские книжки - в речи коллег постоянно какие то цитаты проскакивали.
Возможно что-то ещё подпилено, чтобы GUI лучше работало из коробки.
Например хочется посмотреть на систему в целом (в том числе как железо распознаётся из коробки и управляется из дефолтного GUI) до инсталляции (до которой дело может не дойти).
Просто -O3. Можете у себя попробовать и поиграться с флагами.
На микробенче с хешмапами
против
у меня Go немного быстрее. Понятно, что это скорее тест на рантайм и стандартную библиотеку, чем на кодогенератор.
Вот конкретно это для своего ноута и в линуксе до сих пор приходится чинить скриптом при загрузке. Смотрел на MidnightBSD - оно ещё и встроенный WiFi не видит.
По крайней мере в С/C++ в оптимизированном коде ebp/rbp чаще используются как обычные регистры (гуглить на тему frame pointer omission).
Ноги у него растут скорее из Alef.
Да, обвязочка вокруг FMA там очень весёлая ) Не уверен, что при этом что-то ускоряется.
Просто переаллокации памяти, о которых в основном речь в статье, на мой взгляд скорееlow hanging fruits. Последние наносекунды - это когда основное время в нашем счётном коде, алгоритмические оптимизации применили, очевидные однородные вычисления векторизовали, с локальностью памяти поработали и надо смотреть на использование ресурсов процессора - раскладка по портам и т.д..
Ну да - всё таки если нужна производительность, от многомерного массива ожидается что он аллоцирован один раз последовательным куском, но при этом разные индексы по разному влияют на смещение от начала. В плюсы для этого таки завезли mdspan.
А по сравнению собственно кодогенератора Go (стандартной реализации от гугла) и clang/gcc есть какие-нибудь сравнения? Как там в плане базовых оптимизаций (анроллинг циклов и т.п.), автовекторизации и прочего? Что насчёт выбора последовательности инструкций под конкретную модель процессора (clang/gcc для этого используют описание микроархитектуры в файликах вроде этих)?
Только по историческим причинам он всегда инкрементировался с фиксированной частотой.
Угу, соответственно тот досовский edit вообще не помню - для быстрого редактирования можно же просто нажать F4 )