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