Artem
Зачем она нам?
Alexander "SonnySlave"
Зачем она нам?
Одному Страуструпу известно
Egor
Так, это или я туплю, или компиляторы сосут? https://godbolt.org/g/CE7ACv
А в чём проблема? Сравнение беззнакового со знаковым, это warning, второе превращается в беззнаковое.
Artem
Я просто в шоке... Нет бы написать более менее адекватную программу по изучению хотя бы OpenGL, и glut допустим...
Nikita
Так, это или я туплю, или компиляторы сосут? https://godbolt.org/g/CE7ACv
И кто из них должен быть неправ? (У шлага тут конвеер не поломается)
Alexander "SonnySlave"
kitsu
Что движет ими? Министерство требует такого или что?
Кто что изучил, про то и рассказывает. Как правило старым преподам лениво/сложно что-то осваивать, вот они и рассказывают про то, как прекрасен код на fortran90
Berkus
что на SIMULA 67 писать заставят? ну так зато прямо к корням припадёте
Ваня
Боятся ООП не нужно
Ваня
Да и лабы не сложные
Berkus
канонично было бы на smalltalk ООП изучать
есть тот же Newspeak VM например с достаточно современным смолтоком, так что никаких проблем это устроить нет
Artem
Да и лабы не сложные
Я сложных лаб особо и не боюсь, а вот если скажут пишите на SIMULA 67, я уже не слишком удивлюсь...
Berkus
канонично было бы на smalltalk ООП изучать
но смолток появился позже симулы
vladislav
шучу, конечно, C++ уже все преподы давно освоили. Но не сказать, что это идеальный язык для изучения ООП
kitsu
kitsu
p.s. https://habrahabr.ru/company/innopolis_university/blog/333622/
Berkus
Хотя бы не Эйфель
эйфель как раз таки ООП язык, получше питона и С++ для этого
Anonymous
а что не так?
Он не совсем ооп, хоть и позволяет применять концепцию
Anonymous
чем это он не ооп?
Многим не нравится отсутствие модификаторов доступа
Anonymous
многим и friend функции не нравятся
Тут хоть небольшая возможность спрятать данные от длинных рук есть, а в питоне нет
melvin
Тут хоть небольшая возможность спрятать данные от длинных рук есть, а в питоне нет
в питоне есть один способ эффективно спрятать данные, но им никто не пользуется
Liubomyr ✙
лс)
melvin
странно вроде о языках разных общались а теперь не по теме :/
melvin
Будут пруфы?
>>> def counter(initial): ... c = initial ... def inner(x): ... nonlocal c ... c+=x ... return c ... return inner >>> c <function counter.<locals>.inner at 0x7fc09e311048>
Berkus
чем это он не ооп?
где ж там ооп, сплошные костыли
melvin
*стикер с обиженным котиком*
Berkus
это больше в сторону FP
melvin
ну так и есть
melvin
зато рефлексии навалом :D
Berkus
рефлексия и в руби есть, а там ооп ящитаю гораздо более оопистое
Berkus
но вообще рефлексия это не главное, и к ооп ортогональна
kitsu
это больше в сторону FP
скорее есть отдельно фп-питон и отдельно процедурный
kitsu
все же можно на нем писать очень хреновый, и весьма просто
Ioann_
простой вопрос: что быстрее: unsigned foo(unsigned x) { return (x<<4) - (x<<2) - (x<<1); } vs unsigned foo(unsigned x) { return x*10; } ?
Точно первая. Хотя скорее всего, ее компилятор запишет через (x + 4x) sum (x + 4x), при том повторку занесет в който из стандартныхрегистров, вроде EAX С телефона мне проверить сложно. Но что говорить и думать, когда в очевидных оптимизациях - компилятор промахивается изрядно. То что ты в пример кинул - это своего рода easy base. В то время, как то о чем например говорю я - уже требует наличия от компилятора комбинировать какие то части и понимать, что отсечется.
Ioann_
Я придумал кое что крутое, для теста. Но пока нету времени именно это сесть и сделать. Но если коротко - проверю, на СЛОЖНОЙ практической задаче, то, кпк грамотно распаковывает компилятор std vector + умные указатели. Проверю логику его циклов и их разворотов. Сделаю это на реальной практической задаче. Далее, возможно, пофикшу ее asm ручками и прогоню с фиксом. Разница в 5-10% win. Если меньше - lose.
Vladislav
а вот шланг обоих одинаково хорошо соптимизировал
Vladislav
https://godbolt.org/g/YjevrL
Ioann_
лол, gcc наоборот превращает первый вариант в умножение, а второй оптимизирует в lea + add
Ой, я немного неверно выразился. Я хотел написать, как доожно бы быть в идеале. В идеале как раз через add - должно быть быстрее.
Ioann_
Ну а то что там компиляторы мудрят - это их право. Хы. Тут надо делать так: запускать тесты и измерять время. Вообще бы, в rtos.
Vladislav
О, кстати, а ты умеешь правильно измерять? Это целое искусство
Ioann_
Почти уверен что ни один из компиляторов не вывезет верно накатать в simd - скалярное умножение 4 ех векторов в 5 инструкций :) Не проверял - но почти уверен, т.к задача редкая, да м человек ее сходу не решит.
Ioann_
О, кстати, а ты умеешь правильно измерять? Это целое искусство
Ну что то помню возился, было дело. А какую замерку ты имеешь ввиду верно сделаной. Std chrono + create thread with max priority on win ?
Vladislav
Ну что то помню возился, было дело. А какую замерку ты имеешь ввиду верно сделаной. Std chrono + create thread with max priority on win ?
ну вот предположим что ты уже сделал n замеров, как ты из них получишь финальный результат ?
Ioann_
Ну тут надо Коле сказать спасибо. Возьму min.
Vladislav
Ну тут надо Коле сказать спасибо. Возьму min.
вот) многие этого не знают, даже в каких-то там библиотеках для бенчмарков видел что среднее берут
Vladislav
а, понял что ты имеешь в виду
Vladislav
4 параллельных скалярных произведения?
Ioann_
Yep
Ioann_
Ну суть в том, что таким методом можно в целом по 4 делать быстро. Т.е есть у тебя 16 то задача хорошо ляжет на Avx. Так то если подумать это не сложно. Но в компиляторы я не особо верю. Конечно, могу и ошибаться.
Alexander "SonnySlave"
Уже обычно хоть не среднее берут, а перцентили считают
Alexander "SonnySlave"
Если да, то сразу репорти в компиляторы
Alexander "SonnySlave"
Да, согласен.
Arseny
вот) многие этого не знают, даже в каких-то там библиотеках для бенчмарков видел что среднее берут
Не всегда. Например, многопоточный код может иногда подтормаживать из-за false sharing. Если только брать минимум, то можно просто этого не заметить.
Arseny
Ну потому что примерно все колебания времени работы происходят из-за внешней среды. Например, потому что кто-то другой начал сильно использовать cpu.
Arseny
Ну кто-то другой поработал на cpu и запортил тебе весь кеш.
Anonymous
Ну кто-то другой поработал на cpu и запортил тебе весь кеш.
Делать замеры производительности на таких устройствах, где кто-то другой может поработать и запортить кэш, стоит в крайних случаях?