Berkus
остальное время ушло на writev(1, ...
Anonymous
Парень, ты реально в цикле блин аллоцируешь строку новую каждый раз, а в сях у тебя просто массив байт на стэке лежит, ясен пень это быстрее будет.
Berkus
хых, >/dev/null оок
Anonymous
В любом случае, оба теста можно переписать по-человечески.
Anonymous
не всегда, иногда оптимизатор вывозит развернуть
Покажи, ибо в таких случаях я бы по приколу подсунул палёный глибц проге через окружение.
Ignat
как минимум printf("%s\n", str) часто компилится в puts(str)
Ignat
https://godbolt.org/g/fnE6WS
Ignat
ладно, более сложных примеров я видимо не умею приводить
Anonymous
ладно, более сложных примеров я видимо не умею приводить
Хотя было бы интересно их увидеть, из спортивного интереса.
Anonymous
А вообще, раз пошла тема оптимизаций, 2.pow(n) не оптимизируется в битовый сдвиг.
Anonymous
https://godbolt.org/g/fnE6WS
printf(" %s\n", str) уже не оптимизирует, кстати.
Anonymous
С пробелом.
Anonymous
Хотя это путчар + путс. Видимо, нечастый юзкейс.
Berkus
два сискола вместо одного это не оптимизация
Денис
подождите, там же растовский код быстрее выполнился, не?
Anonymous
два сискола вместо одного это не оптимизация
У глибц буфер внутри, не знаешь, для чего функция fflush()?
Денис
на моей системе кстати не воспроизводится
Anonymous
Погодите, скоро перепишу код того пацана до степени эквивалентности, чтоб показать, что формат быстрее.
Anonymous
на моей системе кстати не воспроизводится
Если что, мой комп корч, хотя у меня воспроизводилось тогда стабильно.
Anonymous
С принципе, если только в русте перевод чисел не запороли по скорости, будет быстрее.
Anonymous
Плюс у структур вызовы своих Display могут кэши в теории попортить.
Денис
Денис
Berkus
У глибц буфер внутри, не знаешь, для чего функция fflush()?
нет, не представляю даже для чего она могла бы быть
Денис
ваши комментирии, господа, почему раст в 7 раз медленнее?)
Anton
Посоны
Anton
Митап апрувнули
Денис
(я знаю ответ)
Anton
Ток без бухоа
Anton
Но бухло на афтепати
Anton
Жратва будет
Berkus
(я знаю ответ)
давай жги
Денис
давай жги
let mut handle = BufWriter::new(stdout.lock()); ... делает результат таким же, как в си
Денис
подозреваю, что и еботня с локом не будет нужна вообще, но лень тестить
Anonymous
let mut handle = BufWriter::new(stdout.lock()); ... делает результат таким же, как в си
@berkus вот видишь, я несколько сообщений тому назад писал тебе про буфер в глибц.
Anonymous
Кстати, вот вам ещё про сисколы, буфер и глибц: если глибц видит, что поток (вывода, например) это устройство (консоль, например), то сбрасывает буфер и делает сискол на каждом \n, а если поток - файл, то чуть реже.
Денис
@postskript а есть какая-то предметная претензия к расту?
Anonymous
@postskript а есть какая-то предметная претензия к расту?
Кроме скорости компиляции и порога вхождения?
Денис
да, кроме))
Денис
над первым работают, второе — бай дизайн)))
Anonymous
над первым работают, второе — бай дизайн)))
Ну над вторым тоже думали, по крайней мере, в планах на этот год.
Αλεχ
Кроме скорости компиляции и порога вхождения?
блять вот кто бы про скорость компиляции говорил
Αλεχ
ебаная куда блять 6.5 часов компилилась у меня в 12 потоков
Αλεχ
нахуй так жить вообще
Денис
Ну над вторым тоже думали, по крайней мере, в планах на этот год.
я боюсь новые фичи не понизят порог вхождения, хотя и позволят легче и приятней писать на расте
Денис
Типы времени, ансейф
можно кратенько по обеим позициям?)
Денис
чисто тезисно)
Anonymous
блять вот кто бы про скорость компиляции говорил
Прости, я сравниваю с чистым си. С плюсами действительно какая-то хрень, компилить как-то новую Лиду телеграмма, так один поток один файл компиляции сжирал три гига.
Денис
Αλεχ
я надеюсь ты не на макбуке компилял?)
откуда на макбуке 6-ядерник?:)
Αλεχ
5820k
Anonymous
Слышал про какого-то гентушника, у которого лиса собиралась ровно сутки.
Денис
bloated code, вот это вот всё
Chebyrash
можно кратенько по обеим позициям?)
Есть unsafe, где можно радостно стрелять себе в ноги, в лучших традициях C/С++ Генераторов в стабильной ветке компилятора пока тоже нету. По ADT есть паттерн-матчинг, но вот, увы, кастомных матчеров нет вообще. В стандартной библиотеке, внезапно, оказалось, что нет вообще типа для времени, что весьма удивило. Отсутствие в стабильной версии компилятора SIMD инструкций, что для низкоуровневого языка странновато.
Anonymous
@chebyrash как ты себе представляешь альтернативу unsafe?
Αλεχ
Есть unsafe, где можно радостно стрелять себе в ноги, в лучших традициях C/С++ Генераторов в стабильной ветке компилятора пока тоже нету. По ADT есть паттерн-матчинг, но вот, увы, кастомных матчеров нет вообще. В стандартной библиотеке, внезапно, оказалось, что нет вообще типа для времени, что весьма удивило. Отсутствие в стабильной версии компилятора SIMD инструкций, что для низкоуровневого языка странновато.
1. Как ты без ансейф реализовал бы split_at_mut? Если бы не стал реализовывать, то весть раст дружно пошел бы нахуй без стандартной библиотеки. А заодно и без FFI 2. WIP, но да, минус. 3. Не понял, что ты тут хотел 4. Вообще это нормально, в шарпах вот тип есть, но он говно, и все чуваки пользуются сторонним крейтом https://nodatime.org/ 5. Есть
Αλεχ
итого по сути 1 минус, который исправят до конца года
Αλεχ
как тебе такое, элон маск?
Денис
Есть unsafe, где можно радостно стрелять себе в ноги, в лучших традициях C/С++ Генераторов в стабильной ветке компилятора пока тоже нету. По ADT есть паттерн-матчинг, но вот, увы, кастомных матчеров нет вообще. В стандартной библиотеке, внезапно, оказалось, что нет вообще типа для времени, что весьма удивило. Отсутствие в стабильной версии компилятора SIMD инструкций, что для низкоуровневого языка странновато.
ну, про ансейф — это необходимое зло. он нужен для написания кода, который использует знание, доступное программисту, но недоступное компилятору. то, что его можно использовать чтобы всё пустить по пизде — ну извините :( генераторы же пилят, ну что такое кастомный матчер?) типа для времени нет в стандартной библиотеке по разумной причине, работа со временем — охуенно сложное мероприятие, просто посмотри на размер крейта chrono, который стандарт де-факто SIMD завезли :)
Anonymous
К тому же, борроу чекер в ансейфе все равно пашет.
Anonymous
Это не эквивалентно ножной стрельбе не в сях.
Αλεχ
да это все не эквивалентно
Αλεχ
вон насчет актикса все орали
Αλεχ
щас все ансейфы починили
Αλεχ
и можно сказать, что в коде НЕТ buffer overflow/double free/...
Αλεχ
кто мне гарантирует хотя бы в одной более-менее серьезной сишкой библиотеки, что у него есть знание, что там НИГДЕ нет их?
Денис
Berkus
следовательно, весь сишный код безопасен
Anonymous
> нет типа для времени А это чтобы не было проблемы 2038-го)))0))00))
Αλεχ