|
COM‐пропагандист
|
|
Тест быстроты сгенерированного кода10.05.2021, 18:45. Показов 15219. Ответов 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 для быстроты Пайтона
Какие сервисы можно преспокойно выключить для быстроты загрузки? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|