LINUX.ORG.RU

Метапрог-прототип, версия 11 + бенчмарк

 , ,


1

3

Следующая версия:

Метапрог-прототип 13 + LOR Browser

Скачать (читать файл с названием своего языка из архива!):

https://www111.zippyshare.com/v/Nq5mH4Sa/file.html

Версия 11 содержит оптимизации транслятора и исправления в Метапрог онлайн. В остальном различий с описанием 10 версии нет.

Версия 10 содержит несколько хотфиксов для транслятора диаграмм и онлайн-функционала. В остальном различий в сравнении с описанием 9 версии нет.

Версия 9 содержит хотфикс: в 8 версии были проблемы со скачиванием проектов через Метапрог онлайн. В остальном различий в сравнении с описанием 8 версии нет.

В текущей версии прототипа наконец-то исправлены проблемы с отображением справки в скомпилированном ехе (рекомендую изучить справочную систему) и реализованы условные схождения. Это означает, что на нем можно делать уже по-настоящему сложную логику. Например, бенчмарк, предложенный в прошлых темах. Другие уже сделали множество реализаций на разных текстовых языках программирования, я сделал реализацию на Лабвью - а теперь это возможно и на Метапроге. Исходная задача на бенчмарк: Метапрог-прототип, версия 6 + будильник на Метапроге (комментарий)

Пока что тест получился в целом неважнецкий, где-то на уровне С++. Полагаю, его еще можно оптимизировать до уровня рукописного Си, так как Метапрог может непосредственно оперировать сишными функциями, если надо - даже без помощи метапроговской стандартной библиотеки. Архив с сишными трансляциями бенчмарка и будильника на Метапроге:

https://www32.zippyshare.com/v/JlUIhEAn/file.html или https://drive.google.com/file/d/1lu1RVqqXEVGgZbviCfwrxFMhdDgvo6LT/view

Доступ к Метапрог-диаграммам можно получить через Метапрог онлайн (репозиторий «бенчмарк ЛОР»), открыть - в прототипе Метапрога.

Каждый бенчмарк проходит 10 повторений, во время каждого выводится 4 числа:

Номер повторения (0-9).

Время (миллисекунды) генерации 100000 строк длиной 100 байт и подсчета их хешей.

Время (миллисекунды) генерации 1000 строк по 20 байт и подсчета их хешей.

Время (миллисекунды) поиска вхождний по хешам.

В случае каждого нахождения вхождения в консоль/stdout выводятся подстрока и строка.

В тестах в случае совпадения хешей в консоль/stdout выводится строка «мяу». Кстати, совпадения хешей случаются даже с 20-символьными подстроками, хотя самих вхождений нет (идет дополнительная проверка).

Условное схождение присутствует, например, в функции генерации случайной английской буквы (A-Z_a-z.bmp, между условием и «+»). После слияния веток с данными (или жесткими последовательностями выполнения) от противоположных условий дальнейшие блоки выполняются в обеих случаях.

Есть разные функции генерации случайного числа, и они совершенно разные по скорости. Если использовать randombytes_uniform из библиотеки libsodium - генерация случайных строк работает в сотни раз медленнее, чем rand. Но функция randombytes_uniform из специальной криптографической библиотеки дает «по-настоящему» случайные числа, в отличие от строк из псевдослучайных чисел (rand), которые повторяются даже между разными запусками программы. Есть тесты, использующие разные функции для случайного числа при генерации 100000 строк по 100 байт. Генерация 1000 строк по 20 байт погоды не делает, тут во всех тестах randombytes_uniform. Уверен, что rand сократило б время генерации 1000 строк по 20 байт до нуля миллисекунд.

Подсчет хешей функцией nk_murmur_hash во всех случаях занимает ничтожную часть времени.

Также для тестирования на достоверность и корректность работы программы есть тесты с подстроками по 5 и 3 байта вместо 20. По ним видно, что бенчмарк работает корректно.

В Метапрог-диагармме подфункции/поддиагарммы могут быть представлены в виде ссылок на файлы (серо-зеленая дискетка при наведении мышью) или же быть частично или полностью отвязанными от файла на диске и полностью находиться в теле файла диагарммы (в таком случае цвет дискетки зависит от наличия и соответствия файлу на диске - путь к нему все же хранится в кластере/структуре диаграммы). Иногда это удобно, чтобы, например, сделать локальный форк подфункции. Например, чтобы использовать rand вместо randombytes_uniform, достаточно было форкнуть диаграмму основного бенчмарка и сделать отвязку от файлов на диске цепочки поддиаграмм, отвечающих за формирование массива случайных строк вплоть до функции генерации псевдослучайного числа. В итоге получились локальные форки функций без необходимости сохранять их в новые файлы. Подобным образом можно управлять и типами, такими как структура/выбор (struct/union), структура условного выбора типа (СУВТ, прямых аналогов в Си нет), пронумерованный список (enum) итд.

Бонус: будильник с проверкой введенных значений (сишная трансляция в файле alarm.c в архиве с бенчмарком, Метапрог-диагарммы в Метапрог онлайн, проект «будильник»).

Из недоделанного: схождения по переключателю (switch) корректно работают только в случае схождения всех без исключения случаев, в том числе «інше»/«другое» (default).

Также заметно, что диагарммы бенчмарков «оплелись» в области поиска подстрок. В прототипе Метапрога работать не очень удобно: есть ограничение на размер окна (если еще увеличить - будут слишком большие задержки отрисовки) и не только, переместить блок входа в цикл по условию (do... while), когда он стал перекрывать вход в типованный цикл (for) было уже довольно сложно (надо переподключать проводки и жесткие последовательности), решил оставить все как есть - все равно работает. В Метапроге «сам на себе», когда он появится, подобных неудобств быть не должно.

В планах: циклы по структурам, переключатели (switch) по многотиповому типу, возможно макросы.

Предыдущая версия: Метапрог-прототип, версия 7 + графические диалоги на Метапроге



Последнее исправление: metaprog (всего исправлений: 7)
Ответ на: комментарий от Razk

Белый прямоугольник - это место где все и происходит. Смотри на него. Не перемещайся с него никуда, ничего кроме него на панели протоитпа Метапрога нет.

metaprog
() автор топика
Ответ на: комментарий от provaton

Ну значит нельзя тебе смотреть на сей шедевр, не дорос ещё!

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от abcq

Бмп ужимаются до сотен кб. Когда добавил инклюдовые исходники - вес архива возрос до 2 мб, но это дополнителньый архив. Основной весит 30 мб и это лабвью-файлы и метапроговская стандартная библиотека.

metaprog
() автор топика

ахереть! 1 год рисования в «самой совершенной» среде программирования, и все, что есть - корявый недобудильник и пара некоррекно решенных задачек. П-Прогресс, Э-Эффективность!

anonymous
()
Ответ на: комментарий от anonymous

Зарплата не самая соврешенная, как и наличие времени.

metaprog
() автор топика
Ответ на: комментарий от abcq

bmp не искажает изображение, в скринах и прочих задачах с кучей строго одинаковых пикселей сжимается до килобайтов. И редактируется удобно если что.

metaprog
() автор топика
Ответ на: комментарий от Razk

да и если не сложно постарайтесь вытянуть качество хотя бы 720p музычка из браузера накладывается на видео и после, а браузер скорее всего норм ресурсов отжирает просто так )

abcq ★★
()
Ответ на: комментарий от stasolog

твой поехавший хозяин обещал к прошлому августу «сам на себе». Ему говорили, что неосилит, он говорил, что «граф программирование! всесильно! лучче чем!». Обдристался?

А скачивать и улучшать какое-то г..но… а смысл?

anonymous
()
Ответ на: комментарий от metaprog

У меня работает. Правда если комп не в спящем/ждущем режиме.

Какой тогда от него толк? Ты в реальном мире будильником вообще пользовался?

anonymous
()
Ответ на: комментарий от metaprog

а к чему такое качество то, думаете пнг способен настолько зашакалить картинку в самой лютой степени сжатия что что-то будет потеряно, что-то сомнительно…

abcq ★★
()
Ответ на: комментарий от anonymous

Дык Метапрогу не хватает донатов, надо больше донатов!

Линус Торвальдс (на которого ТС все время кивает) же когда прототип линукса писал получал 100500 донатов в день хороших денег и времени у него было хоть отбавляй, бггг.

AntonI ★★★★★
()
Ответ на: комментарий от DELIRIUM

Давным-давно я видел немного другую формулировку: «Продукт хоть и качественный, но всё равно вторичный…»

anonymous
()
Ответ на: комментарий от AntonI

Привет, объясни ТСу, что такое полный квадрат, ты кандидат наук, у тебя может знаний хватит, у меня не хватает просто.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от DELIRIUM

Чем жырнее архив, тем круче продукт.

Да! Система, на которой можно сделать целый будильник, который течет и падает, должна весить не меньше 100 мегабайт. А когда можно будет строку с консоли перевернуть, то тут гиг как минимум. и потом уже можно в интерпрайз.

anonymous
()
Ответ на: комментарий от DELIRIUM

Привет.

Когда я был в твоём возрасте, я думал что могу научить кого угодно чему угодно. Сейчас, с опытом, я понимаю что необучаемые дворники необучаемы. Увы… это совершенно безнадежный случай.

AntonI ★★★★★
()
Ответ на: комментарий от metaprog

GitHub/gitlab + git tag для релизов.

Ах да, что это я…

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от AntonI

Будет прикольно, если в итоге выяснится, что ТС - профессор мехмата на пенсии, которому делать нехер и он масштабно троллит ЛОР.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от Razk

https://stream.twitch.tv/ уже давно гайдлайнов нарисовали. Выставите соответствующие настройки и будет вам 720p (или иное) на выходе, только формат останется выбрать для сохранения.

abcq ★★
()
Ответ на: комментарий от stasolog

Это не я есличо! Моего кода там максимум на килобайт!

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от anonymous

у меня глаза не антуражные, пощадите :3

abcq ★★
()

посмотрел картинки. Это фейл. Такая каша из линий и непонятных сущностей, за которыми вообще непонятно, что происходит. Совсем надо упороться, чтоб это хоть как-то лучше даже перла или раста считать.

anonymous
()
Ответ на: комментарий от stasolog

ну разумеется, если ты сам эту лапшу написал, то тебе она понятна будет. это как с проводами. Если и сам их проводишь, то уже помнишь где какой даже в адовом бардаке. Так вот эти картинки это и есть адов бардак. Ни четкой структуры, ни стиля. Просто какая-то каляка-маляка из детского сада. Кстати в лабвью даже все аккуратнее сильно выглядит. Наверное потому что там какие-никакие UX спецы/дизайнеры есть…

anonymous
()
Ответ на: комментарий от anonymous

Просто какая-то каляка-маляка из детского сада.

Готовьте кота и лампу, сейчас прохладная будет.

Есть у меня кореш, он художник, преподает в универе и в детском саду как раз рисование. И он рассказал, пацанчик в саду нарисовал хер пойми что. Ну он у него спрашивает:

- это что за каляка-маляка?

А пацан обиделся и гордо ответил:

- это не каляка-маляка! Это взрыв пиписьки!

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от anonymous

ну разумеется, если ты сам эту лапшу написал, то тебе она понятна будет.

Ты себя самым умным считаешь? Чужой код тоже будет хорошо читаться, я не говорю только про свой.

stasolog
()
Ответ на: комментарий от AntonI

И Пушкиным с Толстым сразу. Не забываем любовь к классической литературе.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от stasolog

Но тут кроме тебя и второго «прогрммиста» эти каляки-маляки никто не понимает. Да я думаю, что и ты тоже просто делаешь вид.

anonymous
()
Ответ на: комментарий от metaprog

Когда на гитлабе или гитлабе создаешь репозиторий, оно тебе дает список команд, которыми можно зааплоадить твой код. Копипастишь их в консольку и профит.

provaton ★★★★★
()
Ответ на: комментарий от provaton

более того, на гитхабе вообще можно через веб морду все это сделать)))

saibogo ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.