|
COM‐пропагандист
|
|
Тест быстроты сгенерированного кода10.05.2021, 18:45. Показов 15187. Ответов 100
Синтетический тест быстроты сгенерированного кода разных компиляторов на основе алгоритма быстрой сортировки.
## Требования 1. Алгоритм быстрой сортировки (сортировка Хоара с разбиением по Хоару). 2. Сортировка по возрастанию: от маленького значения к большему. 3. Посторонние библиотеки для сортировки не использовать. 4. Сортировка в одном потоке. ### Измерения 1. Измеряется время сортировки массива. 2. Десять циклов измерений времени, выводится среднее. ### Данные 1. Длина массива 50000000 (пятьдесят миллионов). 2. Тип данных массива: структура из двух полей типа Double: {LowPart, HighPart}. 3. На каждом цикле массив заполняется случайными значениями в интервале `[0, 1)`. 4. Генератор случайных чисел инициализируется заново перед каждым заполнением массива. 5. Количество рекурсивных вызовов функции сотировки должно быть одинаковым на одном и том же наборе данных. 6. Затравка для генератора случайных чисел равна нулю. 7. Функция сравнения переменных a и b (возможна оптимизация): ``` (a.HighPart < b.HighPart) Or ((a.HighPart = b.HighPart) And (a.LowPart < b.LowPart)) ``` ### Вывод 1. Время выполнения сортировки по каждому циклу. 2. Количество рекурсивных вызовов сортировки (должно быть одинаковым). 3. Среднее время. Для компиляции этой программы необходим gcc (для "-gen gcc" на x86) и mingw (для утилиты mingw32-make). Необходимые пути к компилятору и утилитам указаны в пакетных файлах. В результате: FreeBASIC с задником GCC 5.2.0: среднее время 12080 миллисекунд. FreeBASIC с задником GCC 8.1.0: среднее время 12445 миллисекунд. FreeBASIC с задником GCC 10.2.0: среднее время 10993 миллисекунд. Забавно, что звучащая фоном музыка может замедлять задачу на 1000 миллисекунд. Приглашаю вступить в игру пропагандистам других диалектов бесика.
1
|
|
| 10.05.2021, 18:45 | |
|
Ответы с готовыми решениями:
100
Ошибки сгенерированного кода Выполнение кода, сгенерированного Roslyn Чтение сгенерированного кода в Visual Studio |
|
Кормпилятор
|
||
| 26.05.2021, 21:17 | ||
|
с автоматами его, впоследствии выяснилось, что программист он никакой, но преподаёт и "лечит" всех. Через пару дней вернусь с дачи(тут с инетом проблема) и мы загуглим компетенции этого книжника. Не первый раз. Кесарю кесарево.
0
|
||
| 26.05.2021, 22:47 | |
|
У меня небольшая модификация алгоритма QSort дает прирост производительности примерно 10%
На моем компьютере (i3-7100U 2.40Ghz, Win10 64 bit) 64х разрядная версия считает менее 9 секунд при этом код на PB из 19 сообщения считает 11 секунд а код из стартового сообщения (QuickSort_Console_GCC-10.2.0_FBC-1.07.3) - 10 секунд.
0
|
|
|
COM‐пропагандист
|
||
| 27.05.2021, 06:30 [ТС] | ||
|
0
|
||
|
|
|||
| 27.05.2021, 07:02 | |||
|
Зависимость достаточно линейная, потому нет смысла считать все 50 миллионов, и 5 раз достаточно для повтора. У меня на VB6 1 миллион считает около 5 секунд, 10 000 000 около минуты, смею предположить, что 50 лимонов будет обсчитывать немногим больше 5 минут.
0
|
|||
|
COM‐пропагандист
|
|
| 27.05.2021, 09:44 [ТС] | |
|
0
|
|
|
|
||
| 27.05.2021, 12:12 | ||
|
0
|
||
|
Кормпилятор
|
||
| 28.05.2021, 16:18 | ||
|
чем какие-то коды не особо понятного назначения: https://github.com/robertmartin8 Писька ещё не выросла у него что-то определять в этой жизни. И да вы сортировкой с кастомной структурой, которую надо ещё обслуживать решили скорость мерить? Ну тогда делайте бенчмарк, фигли тут ещё скажешь.
0
|
||
|
COM‐пропагандист
|
||
| 28.05.2021, 16:45 [ТС] | ||
|
https://ru.wikipedia.org/wiki/... %B5%D1%80)
0
|
||
|
Кормпилятор
|
||
| 28.05.2021, 17:01 | ||
|
а во-вторых, это вообще другой лагерь т.е. си. Так что пусть программируют на своём и не парят нормальным людям мозги. Я в их огород не лезу со своими рекомендациями.
0
|
||
|
COM‐пропагандист
|
||
| 28.05.2021, 18:06 [ТС] | ||
|
0
|
||
|
Кормпилятор
|
||
| 28.05.2021, 19:58 | ||
|
За подход - пиши алгоритм на бумаге, потом код. За документацию и за полную формализацию. За собственные решения, за развитие и труд(единственный определяющий фактор в кодинге). За большие, сложные, проекты. За такой код, который килостроками, в считанные часы, можно портировать на другой диалект, большую часть тупо заменой текста, вручную, конечно. Причём с нулевым напрягом мозга. Это если не перечёркивает всю идеологию кроссплатформенности, то как минимум даёт позывы сильно усомниться в её необходимости. А про плохие практики целую тему в своё время завёл, в которой критикую лопоухих ослов, пишущих нерабочий, багованный код, который не даёт получить результат при правильном применении софта. По факту мне плевать как написан код. Мне приятно читать QB код, но не буду хаять человека за отсутствие комментов, за беспробельный свёрнутый в гармошку код, даже за сотню шаблонных IF-ов подряд, если он нормально работает и не создаёт проблем. Хороший код в моём понимании, это тот, из которого можно быстро вычитать визуально все детали даже в редакторе без подсветки синтаксиса, хорошо комментированный, где есть чёткое разграничение секций, константы, декларации, переменные, процедуры. QB в некоторых местах устарел, а в некоторых сделан лишь для обеспечения совместимости с более старым кодом и надо это понимать, а не писать мне про GOSUB, которого у меня никогда не было в коде. А по поводу плохого кода, у бисквита был код с GOSUB, назвать его плохим - язык не повернётся, ибо он превосходно работает. Сложно разборный - да, плохой - нет. Добавлено через 12 минут Ещё я за рассчётливость программиста, если что-то удобнее сделать на ассемблере - лучше сделать это на ассемблере. За выбор алгоритма соразмерно своим силам и потребностям. А не за тупейшее копирование рекурсивных чужих кусортов. Разверни его в нерекурсивное и мы посмотрим какой-ты программист, докажи сам себе, что ты можешь делать крутоту и нести добро в этот мир. Я подобные задачки уже решал, например сканирование файлов развернул в нерекурсивный вариант, выкладывал на сайте Стаса, потом у себя уже прикрутил к нему гибрид рапид сорт с пузырьком и оно офигенно работает, несмотря на то, что пузырёк считается самым хреновым алгоритмом. А если вестись постоянно на чужое мнение, то можно и нихрена не сделать от себя, только тырить тырить и ещё раз тырить. Философия тыринга вообще страшная вещь. Если человек к ней привык, на тяжёлых задачах, где требуется много нетривиальной логики обдумывать - начнутся страшные пробуксовки. Можешь ещё вырубить интернет и протестировать себя на прочность, сразу поймёшь какой-ты программист. Добавлено через 5 минут И ещё мне хочется немного стабильности, чтобы мои(и не только) проги, которые сейчас пишу(пишут люди) работали через 10, 20, 30, 50, 100 лет. Почему такие цифры? Была серия видео вида "будущее которое не наступило" https://www.youtube.com/watch?v=xoUXGgO0Lj4 Хочется чтобы инструкции и модули процессоров были стандартизованы, а кол-во типов процессоров(и платформ) шло к разумному уменьшению. Чтобы в отрасль допускали только высококвалифицированных специалистов.
1
|
||
|
Кормпилятор
|
||
| 28.05.2021, 21:50 | ||
|
бывают люди которые умеют и которые нет, остальное от лукавого.
0
|
||
|
|
||
| 28.05.2021, 21:53 | ||
|
У меня есть сканер 90-х годов, работает только под XP x86, на другие системы нет дров в природе. Так держу для него виртуалку с WIN XP, и не напрягает ни разу. Если программа хорошая и нужная, то всегда найдется способ продлить ей жизнь. А если дерьмо какое, то ничего ей не поможет
0
|
||
|
Кормпилятор
|
||
| 29.05.2021, 00:58 | ||
|
целей тестирования. Речь не только про DOS, а про любую ОС в принципе, ОС это тоже софт. Найдут тысячу причин убрать совместимость. И если 98 винда - это была непредусмотренная хрень с памятью. То всё остальное - это принципиальный отказ от IBM совместимости. И есть хардварные особенности. Если про DOS, то, во-первых, эмулятор в разы медленнее, нежели если бы это запускалось на реальном железе, расплата скоростью крайне неприятна. Далее половина эмулируемых хардварных фич не работает и выполнена как заглушки. Например в саунд бластере не эмулируется "фича прямого доступа к отклонению мембраны", как это было на железке. Это делалось через DSP чип. Порты кварцевого генератора, а т.е. таймера невозможно корректно сэмулировать. Конечно это всё херня, но в сумме оно не работает как железо и этих факторов больше. Во-вторых, были интересные штуки, например т.н. "unreal" режим, т.н. "баг" процев, ставшей фичей, когда под DOS становилось доступно 4ГБ адресного пространства, можно было спокойно работать. Не вдавался в подробности, как это делалось(как там LGDT заполнялось и что в какие порты уходило), были килобайтовые утилитки делавшие такую "фичу" если в памяти не было himem.sys и прочих менеджеров. Эмулятор это не эмулирует. Может кто-то в своей практике использовал. Сам только тестил, штука интересная. Ну и скоростные характеристики SIMD сведены на нет.
0
|
||
|
|
||
| 29.05.2021, 05:28 | ||
Реально считаешь, что ДосБокс на твоей рязани работает медленнее, чем реальная машинка на 286-386 проце?Вроде там просто надо такты подкрутить, и полетит.
0
|
||
|
Кормпилятор
|
||
| 29.05.2021, 15:38 | ||
|
в разы быстрее чем под виндой в DOSBox-е и с кучей минусов, озвученных выше. Не знаю как там с FreeDOS-ом дела, может сейчас он встанет и на GPT раздел. Но раньше вроде не было. Уже давно с DOS-а ушёл, держу DOSBox для мелких нужд. Про подкручивание циклов уже говорил. Были сборки интересные DOSBox-а где GUI обёртка,там ещё и по производительности вроде было подкручено. В целом обычная виртуалка вида VirtualPC, VirtualBox, VMWare - работает быстрее. Лет наверное 10 назад тестировал, VMWare была самая быстрая из всех. 386 у меня был, к слову. Добавлено через 7 минут Помню миниатюрную видеокарту с 256 кб памяти на съёмных чипах, вроде столько там стояло. Съёмный контроллер жёстких дисков на ISA и SIMM модули памяти на 1 мегабайт.
0
|
||
|
|
||
| 29.05.2021, 17:11 | ||
|
Диагональ/разрешение 15.6"/1920x1080 пикс. Процессор Intel Core i5 10300H 2.5 ГГц Оперативная память (RAM) 16 ГБ Графический контроллер GeForce GTX 1650 Ti 4GB Объем SSD 256ГБ Операционная система DOS Версия ОС FreeDOS Всего за 70 000 руб, сиди, настальгируй!
0
|
||
|
Кормпилятор
|
||
| 29.05.2021, 17:30 | ||
|
https://www.cpubenchmark.net/c... Hz&id=3646 Семёру только туда, чтобы более менее комфортно, если встанет вообще ну и в плане дров. А DOS мне легко поставить, благо материнок хватает. Просто не до ностальгии сейчас. Тут просто если про что-то нужное, то, кроме 2003-го офиса там мало чего, XP больше хочется как раз из-за удобства, потому что пиксель арт шрифты приятнее(без сглаживания и clear type) мышки точнее работают, GDI быстрее, отклик системы почти мгновенный, ну и сама оболочка, конечно, качественнее выполнена. На семёрке и выше, если ты ставишь шерховатый бекграунд тебе его размажет если он не будет в jpg с соотв. качеством, на восьмёрке размажет в любом случае, ребята из MS думают наверное что я слепой совсем.
0
|
||
|
COM‐пропагандист
|
|
| 29.05.2021, 18:01 [ТС] | |
|
Странно, что вы всё ещё пишете программы для DOS.
0
|
|
| 29.05.2021, 18:01 | |
|
Как сравнить эффективность сгенерированного кода Си VS2003 VS Pelles C ver.7
C-Extension для быстроты Пайтона
Какие сервисы можно преспокойно выключить для быстроты загрузки? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|