|
COM‐пропагандист
|
|
Тест быстроты сгенерированного кода10.05.2021, 18:45. Показов 15189. Ответов 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 |
|
|
||||||||||||
| 23.05.2021, 23:34 | ||||||||||||
|
https://4pda.to/forum/index.php?showtopic=786390 Еще есть аеромышки с голосовым поиском. Для компа оптимизатор тот же, просто трансляция в x86-x64 асм. Повторюсь, полный контроль имеем только при разработке на асме. Если пишем на ЯВУ, качество трансляции в асм зависит от компилятора и у оптимизирующих оно выше, чем у не оптимизирующих. Это ТВ приставка и использовать ее нужно по назначению. У меня редко бывает открыто больше 10 вкладок.
0
|
||||||||||||
|
Кормпилятор
|
||||||||
| 24.05.2021, 01:03 | ||||||||
|
с жёсткого диска, причина простая - USB 2.0. А также на ютубе не умеет в 4k. Можно конечно сказать что ему досталась плохая приставка. Вот тут он резюмирует что "ютюбчик и потоковое до 1080p": https://youtu.be/-ZT27s3AEqw?t=1030 Адекватный чувак. Добавлено через 27 минут кроссплатформенно транслируется на разные чипы(которых в мобильных устройствах был целый зоопарк и упрекать тут x86 не надо). За одним лишь исключением, чуваки пилили это аккурат под слабые чипы, на сильных x86 с приличными SIMD-ами - оно должно летать, чисто физически ТОЧНО могло. Однако работает как говно. Потому что и написано ужасно и сам принцип пиши на ЯВУ а оптимизируют за тебя - хреновый, и каждый спец это знает, а оправдывают потому что мол "никто не будет писать на каждый чип своё". Ну не будут и ладно, а я вот врать не буду, говорю как есть. Плохая критика? Зато правдивая. Плавно было 20 лет назад на PC. Андроиды это тупящее уродское неоптимизированное говно, с 20 FPS интерфейсом, который при разной собственной анимации часто испытывает оголтелые фризы, это люди почему-то считают за "плавно". Кто этого не замечает - я не в силах помочь. Плавность как раз вижу предельно хорошо, в сравнительном тесте могу с ходу сказать где быстрее работает глядя на экран, производя какие-либо действия, скроллинг, перетаскивание и т.п.. Если разница хотя бы на 30% есть - это мгновенно бросается в глаза. А фризы видны сразу(я даже на записанном NVenc-ом замечаю фризы, образовавшиеся из-за скидывания буфера на внутренний жёсткий диск, в это время ряд процессов кратковременно блокируются и кодировщик испытывает нехватку ресурсов, чего не происходит при работе с внешним жёстким диском, т.к. там срабатывает неблокирующий потоки буфер интерфейса устройства). Повторюсь. В сравнении с ПК 20 летней давности - интерфейс работает как говно и сделан как говно. Добавлено через 17 минут за нормальными, где можно заменить. Вот тут человек пишет, что есть ещё такие: https://habr.com/ru/post/513964/ Добавлено через 39 минут который никто не смотрит. В основном конечно нет. Просто не понимаю как можно говорить за всех, ты в одном месте находишься, я в другом и люди в разных местах, разное расстояние до серверов разные трассы, разные провайдеры, у них разное оборудование, у людей разное железо, разные файерволлы, блокировщики реклам и прочее. В магазине то ни разу не видел телевизор 8k, у нас таких просто нет. Года три назад ещё прилично стримил, чисто по наблюдениям, половина народу не могла смотреть даже не FullHD, а тот самый 12MBit с голого NVenc. С планшетов процентов 80 не могли нормально смотреть. Не думаю что сильно что-то изменилось, как будто все готовы менять свои устройства по малейшему чиху. Да нет конечно. Сайты ещё больше отожрались, тот же ютуб. Сейчас да могу в 6 Mbit уложить, другой уровень комфорта для людей сделать, twitch подтянул свой сервис, раньше 3.8MBit там был предел, сейчас 6 может, наверное, не всегда хорошо, но тем не менее может. http://www.virtualdub.org/docs_compiling.html Isn't assembly language dead with modern compilers? http://www.virtualdub.org/oldnews.html 3/17/2004 News: Taking the 64-bit plunge Там куда не плюнь жопа. А демщики на x86 под DOS делали хардкорнее, чем всё, что ты когда-либо видел. Примеры показывал и не раз. Текущим жопоруким такое даже с кучей денег и преподавателей не снилось.
0
|
||||||||
|
COM‐пропагандист
|
|||||||||||
| 24.05.2021, 07:58 [ТС] | |||||||||||
|
Особый путь — это когда вы хотите: * вместо структурного кода получить спагетти‐код * вместо процедур — GOTO по номеру строки * об объектах вообще речи нет, потому что они все для молодых бородатых мужчин в клетчатых рубашках сделаны. Нет какого‐то «особого пути». Есть только различия в синтаксисе и семантике. У бейсика verbose‐синтаксис, в си принято использовать ASCII‐арт и псевдографику вместо синтаксиса, вот эти все закорючки в коде *&||!;{}++--<<>>. Вот и всё различие. * должна быть объявлена там, где она используется * существовать столько времени, сколько она нужна * не протекать туда, где ей не место. Мало того, что глобальные переменные явно нарушают все эти три пункта, так они ещё вносят неявные проблемы с конфликтом имён и параллельным выполнением.
0
|
|||||||||||
|
|
|||
| 24.05.2021, 10:22 | |||
|
При просмотре видео обычно таких температур не бывает. Почему греется? Вы ее размеры видели? Думаете реально обеспечить хорошее пассивное охлаждение в закрытом пластмассовом корпусе небольшого размера? Берите приставку про которую я писал. У нее USB 3.0 и таких проблем нет.
0
|
|||
|
|
||
| 24.05.2021, 14:31 | ||
|
Строго говоря, номера строк были не совсем тем, что вы имеете в виду. Это скорее номера конкретных команд, и переход осуществлялся на эти номера команд, а не на номера строк. При этом обычный редактор не может подменить собой то, что требовалось бейсиком с номерами, - это совершенно очевидно для всякого, кто с этим соприкасался.
Касаемо вставки между строк, то вы видимо вообще не знакомы с этим делом... Строки нумеровались с шагом 10, а если этого средства было мало, то был такая замечательная команда renum.
0
|
||
|
COM‐пропагандист
|
|||
| 24.05.2021, 14:41 [ТС] | |||
|
0
|
|||
|
Кормпилятор
|
|||||||||||||||||||
| 24.05.2021, 16:32 | |||||||||||||||||||
|
Вы мало того что не понимаете концепцию классического BASIC, так ещё и с оформлением кода у вас проблемы. Именно поэтому много раз видел в инете у людей кривожопое оформление вида a=(b*c/3) вместо a = (b * c / 3) всякие REM-ы вместо простого ' отступы в одну позицию, а не легко читаемой глазом мозаикой закрытие NEXT-ом длинных циклов без указания переменных и полное отсутствие комментов, что выказывает пофигизм человека на всех кто этот код будет читать, И об объектах - никогда не буду миксовать два координально разных принципа кодирования. и объяснил почему, это было даже отцитировано. Правила вида "должна" придумывают залётные птицы, которые только получили оперение, ещё не научились летать, но уже бойко вступают в дискуссии пытаясь учить давно летающих. Добавлено через 10 минут ........... Добавлено через 11 минут проектов ни там ни там пока не видели. Определись уже в какой-нибудь один клан, если несколько не по силам. Добавлено через 3 минуты
Расплачиваются местом по горизонтали, куда могло влезть ещё несколько символов. Добавлено через 6 минут алюминиевый корпус и монтировать на него контактные площадки с термоинтерфейсом. Китайцам это не надо. Добавлено через 22 минуты Он нарушает лишь мозги у тех, кто не может понять, почему код становится читабельнее.
ничего не определяют. Если можно от него избавиться - это прекрасно. Ещё более прекрасно то, что никто не заставляет писать без скобок. При отсутствии скобок например сразу становится понятно, что процедура пользовательская, это мгновенно выхватывается глазом из кода. Позволяет быстрее найти нужный кусок кода. Функции таком способом сделать невозможно, например по причине их использования в операторе PRINT, где параметры разделяются запятыми и визуально(не технически) невозможно будет вычленить где параметры функции, а где просто значения.
0
|
|||||||||||||||||||
|
COM‐пропагандист
|
|||||||
| 24.05.2021, 17:41 [ТС] | |||||||
|
0
|
|||||||
|
Кормпилятор
|
||||||||
| 24.05.2021, 18:27 | ||||||||
|
Сложность может быть не в коде, а в используемом алгоритме, в мелких но важных нюансах и деталях. Приведу пример:
посчитает, что можно схлопнуть и убрать(сделать параметр необязательным). В таком случае всё похеривается. Это относится к косякам Gfx, о которых я хотел как раз поговорить. Разрабы не спешат устранять говно. Сходу прозрачность загруженных прозрачных *.Png не пашет, чтобы работало - нужно подготавливать набор имаджей указанным образом. Вместо того чтобы просто сделать PUT с ALPHA и значением. Классический подход - обрамлять описаниями цельные блоки(т.н. чёрные ящики), комментировать назначения переменных и любые процессы преобразования данных, чтобы читающий мог проследить всю логическую цепочку. Комментарии вещь дополняющая. Чем более он подробный - тем более понятным становится код. Более того код могут читать люди с других ЯП, им могут быть непонятны детали исходного ЯП, и грамотный комментарий написанный связно в контексте поможет разобраться. Я вот колупал такой, 300 строк кода и 60 GOTO\GOSUB. Это устаревшая концепция программирования, не потому что плохой результат, там тоже спецы те ещё, а потому что разбор такого алгоритма - это боль. Когда говорят про GOTO и про его разумное(точечное и редкое) применение имеют в виду не спагетти код, а нормальный структурный вид и разумеется только там, где это оправдано(где реструктуризация может привести(и приведёт) к ошибкам в коде из-за её количества и сложности). Если проект пишется под дедлайн такие случаи бывают. В чистовых работах по понятным причинам(кодинг по документации) GOTO не используется. Слушать кодера хулигана стоит очень осторожно, но лучше вообще не слушать, там здравых мыслей кот наплакал.
0
|
||||||||
|
|
||||
| 24.05.2021, 18:55 | ||||
|
Создатель FB изначально ставил задачу эмуляции qbasic, но в итоге напихал туда всего, что только узнал сам.. Причем напрочь забыв о концептуальной простоте basic. То есть создал очередной клон си с классами. При этом там нет даже встроенных списочных структур, что сейчас в 21 веке как бы считается очень плохим тоном. А нужно было сделать нечто вроде кортежей из euphoria, хотя бы. Нет, предлагается писать все как в си, с нуля. Спасибо хотя бы за то, что строки не надо аллоцировать самостоятельно.. Вот и попробуй тут одно goto оставь, сразу запишут в полоумные и махнут рукой. Однако существуют любители старых ЯП, например forth, есть форумы посвященные только конкретным языкам. Структурных языков вагон, а где неструктурные? Их просто не осталось. Но именно они позволяют писать свободно, без привязки к определенной парадигме и пр. условностям. ---------- Возможно я в чем-то и ошибаюсь, как человек, но разумное зерно в моих рассуждениях думаю найдется.)
0
|
||||
|
Кормпилятор
|
||||||
| 24.05.2021, 20:12 | ||||||
|
Ничего там не противоречит. Локальная(в основном коде, без доступа из процедур), никак не выделяется. Глобальная выделяется SHARED-ом(полный доступ). Это области видимости переменных и массивов. Это не обособленные объекты класса с делегированием доступа, совершенно другая концепция, тут всё проще, по простой примитивной логике. Добавлено через 11 минут главенствующая, пытается навязать свои принципы. Или преподнести мол нам сирым и убогим в наши тёмные углы луч просвещения. На деле это часто сопряжено с корыстными интересами. Мол си для нас слишком геморроен, постоянно геморроится мы не хотим, дайте нам примитивный бейсик, с функционалом си и можно будет тырить код пачками и в потолок плевать. Мода тоже, конечно, влияет. Самое забавное, что ничего принципиально нового не будет, микс идеологий, ребрендинг и по кругу. Эти языки десятками можно рожать перемывая кости. Был бы толк. Добавлено через 14 минут на видном месте ничего не нарушает. В чистовых прогах надобности в этом нет, т.к. вся схематика делается заранее на листочке. Этим многие грешат, просто делают вид что они все правильные, а как жёсткие сроки впаивают - деваться некуда, любые средства идут в ход, чтобы ускорить разработку, дабы было время на тестирование. Добавлено через 12 минут И про "парадигмы", ещё раз, в 80-е 90-е и вплоть до начала нулевых такого термина даже не существовало, об этом никто не говорил. Это уже потом теоретики натеоретизировали. Самое страшное, люди уже не понимают что такое 3GL и 4GL. Взошли плоды так сказать. Добавлено через 37 минут пестрит скобками, там скобки, тут скобки, снизу, сверху, да ещё сами параметры формулами сделаны и тоже там эти скобки то избавиться хотя бы от боковых - это как бальзам на душу, когда часами в этом коде возишься уже в глазах рябить начинает от этих скобок, визуально проще ориентироваться. Ну и два байта с каждой строки как с куста, но об этом мало кто парится сейчас. Короче, это чисто вкусы, кому что надо. Если напрягает, можно написать софтину, которая считает все декларации, найдёт в коде считанные процедуры и добавит скобки. Делов там на пару часов работы, может даже меньше.
1
|
||||||
|
Кормпилятор
|
|||||||
| 25.05.2021, 01:29 | |||||||
Об этой ситуации написал, когда говорил про PRINT. Технически люди могли такое сделать, т.е. второй вариант в твоём посте, почему не сделали? - Как раз поэтому. Это сильно усложнило бы разбор семантики и параметры функции было бы сложно вычленить из параметров процедуры. Без специализированного хелпера в редакторе подобный код читать и редактировать крайне тяжело. Так что у меня тут без вопросов, всё сделано отлично.
0
|
|||||||
|
COM‐пропагандист
|
|||||
| 25.05.2021, 08:59 [ТС] | |||||
|
Добавлено через 4 минуты
0
|
|||||
|
|
||||
| 25.05.2021, 12:46 | ||||
|
0
|
||||
|
COM‐пропагандист
|
|||
| 25.05.2021, 13:46 [ТС] | |||
|
1
|
|||
|
|
|||
| 25.05.2021, 19:28 | |||
|
0
|
|||
|
COM‐пропагандист
|
||||
| 25.05.2021, 19:37 [ТС] | ||||
|
2. Сделайте "#define MultiByteToWideString mbstowcs" и всё сразу станет ясно.
0
|
||||
|
Кормпилятор
|
|||
| 26.05.2021, 19:16 | |||
|
Она не требует специализированных знаний, для понимания работы и никаких противоречий там нет, всё как раз по базе дискретки, или по тем же азам логики. Всё что в данном случае требуется - лишь умение проектировать алгоритмы и писать документацию, это как раз и превентирует возможность допустить ошибку. Работая в реал тайме действительно можно накосячить, тут уже приходится надеятся только на свои навыки(усидчивость, внимательность, опыт). Добавлено через 5 минут Длинные имена например счётчиков - это жопа. И в принципе если всё так писать текст будет тяжело уложить в экран. Так или иначе сокращать приходится, чисто для удобства.
0
|
|||
|
COM‐пропагандист
|
|||
| 26.05.2021, 20:07 [ТС] | |||
0
|
|||
| 26.05.2021, 20:07 | |
|
Как сравнить эффективность сгенерированного кода Си VS2003 VS Pelles C ver.7
C-Extension для быстроты Пайтона
Какие сервисы можно преспокойно выключить для быстроты загрузки? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Оказывается, 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 и то, что с ним. . .
|