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)
Ответ на: комментарий от shpinog

пока да + пока все его реализации «софта» еще подтекают и последние еще и сегфолтятся это если кратко, но разработка идет в принципе.

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

А где тут вранье? Я скипал комментарии по бенчмаркам, но вроде метапрог-прога где то на уровне одной из С++-проги которую кидали ранее.

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

На тот момент мой бенчмарк был примерно равным с тогдашним плюсовым и опережал питоньи в разы. Я не Ванга и не Нострадамус, так что извиняться не за что.

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

Отлично. А теперь попробуй реализовать тот же алгоритм на Метапроге. Или хотя бы расскажи в чем секрет такой скорости, может я по свободе реализую. Когда будет одинаковы алгоритм - тогда можно будет уже говорить что Метапрог как таковой сливает питону и плюсам (если будет сливать), а не различие в алгоритмах (поиска или чего там?).

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

В метапроговском бенчмарке я не использовал ассемблер и непосредственно опкоды процессора, так что мимо кассы.

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

пока не научится «в алгоритмы»

Или те, кто это умеют, сделают/помогут с метапроговской реализацией.

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

расскажи в чем секрет такой скорости

И Андрей закричал - я покину причал, если ты мне откроешь секрет!
И Спаситель ответил - спокойно Андрей, никакого секрета тут нет:-)

  1. Лайт-версия хэшей, они считаются быстро.

  2. Ручная реализация хэш-таблицы, причем в плюсах хэш-таблица оптимизирована для заполнения, потому что это самая дорогая операция.

Подробности в коде. Хочу заметить, что это все тот самый «сферический матан в вакууме» который Вам ненужен. Нет ничего практичнее хорошей теории, такой «матан» позволяет на питоне обгонять сишэчку например.

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

вроде метапрог-прога где то на уровне одной из С++-проги которую кидали ранее.

Метапрог с хэшами на уровне с++ с лобовым поиском, причем замеры делались на разных машинах. Это не о чем, и да - это враньё от Вас.

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

это враньё от Вас.

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

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

Какая возможность? Возможность ненужности питона? Вам 100500 раз говорили разные люди зачем питон и почему, Вы их не слушали. Результат налицо - питон порвал Вашу поделку в клочья, хотя вообще то питон для таких вещей не предназначен.

Кстати лобовая реализация на питоне без хэшей у меня занимает 5.8 сек, т.е. она в полтора раза медленнее Вашей - и это при том что на питоне, в отличии от Вашего кода, юзается заведомо невыгодный алгоритм! И занимает это на питоне ПЯТЬ строк

#!/usr/bin/python
import random
s0, r100 = ''.join(map(chr, range(97,123))), range(100)
genstr = lambda r: ''.join(s0[int(random.random()*26)] for i in r)
stable = [genstr(r100) for i in xrange(100000)]
print sum(map(lambda i, g=genstr(range(20)): sum(g in s for s in stable), range(1000)))

Сухой остаток. Если Вы и правда хотите сделать что то работоспособное (пусть даже это будет метапрог) а не быть вечным позорищем всего ЛОРа, Вам нужно:

  1. Осознать как много Вы не знаете из того что Вам нужно для работы даже над метапрогом.

  2. Начать слушать что Вам говорят, гуглить и читать книги.

  3. Выкатить связное описание концепта метапрога и учесть замечания (но без п 1ю2 это невозможно в принципе).

А пока что у Вас карго-культ программирования в чистом виде.

AntonI ★★★★★
()
Последнее исправление: AntonI (всего исправлений: 1)

Версия 11

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

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

Версия растет не по дням, а по часам.

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

Нет ничего практичнее хорошей теории

Метапрогу на заметку!

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

Когда будет одинаковы алгоритм

То есть, когда метапрог обгоняет другой бенчмарк, то все равно какой где алгоритм, мы напишем «метапрог на уровне C++». Когда другой бенчмарк обгоняет метапрог то ататата, алогоритмы разные, нищетаеца.

Да ты лицемер, дружок…

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

Автопоилка. Судя по всему там датчик движения, когда собака подходит, вода начинает течь.

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

Попробуй через Метапрог онлайн. Там есть чат, я там есть. Если проблемы с запуском - обращайся тут.

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

Да не слишком, особенно если ты программист/хакер. Готовая инструкция есть.

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

Если «по делу», то разве не по Метапрогу?

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

Почти по метапрогу, вот я и прошу временный емаил, если можно. Хочу отправить одно короткое сообщение, а ты примешь

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

Не поленись поставить Метапрог онлайн. Лабвью целое не обязательно, если ехешник - только вайн и райтайм.

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

Конспирация из-за того, что для кодирования (рисования схем) прототипа метапроги используется ворованный лабвью. Мне похер, но у многих лоровчан это вызывает негодование.

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

Конспирация из-за того, что для кодирования (рисования схем) прототипа метапроги используется ворованный лабвью. Мне похер, но у многих лоровчан это вызывает негодование.

Негодование вызывает не сам факт крякнутого лабвью, а лицемерие ТСа.
«Создатели лабвью копирасты и гниды, пусть все у них воруют», параллельно буду просить донаты и требовать денег за реализацию фич метапрога «Плати или иди в жопу»

При этом через раз будет попёрдывать про настоящих программистов которые зарабатывают тонны денег.

При этом в больных умах присутствует убеждённость, что они Линусы, Ритчи и Столманы, они с ними одного поля ягоды.

"Си разрабатывали несколько лет, за кучу бабла, а Я метапрог, а Я МЕТАПРОГ, у меня будильник точный.

Линус сидит за тыреной вендой - унижает копирастов аки Метапрог

Столман в тихаря кодит в вижуал студии - просто студия удобней емакса, аки метапрог с лабвью. А так за свободку.

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

Вранье, изворотливость, двойные стандарты и хамство - дзен метапрога.

liksys ★★★★
()
Последнее исправление: liksys (всего исправлений: 1)
Ответ на: комментарий от deadplace

Как хочешь, хотел сообщить дельную инфу

Да он пока ещё не осознал, что как только метапрог выйдет из стадии прототипа, 90% потенциальной ЦА будет отсеиваться после того, как он им вместо нормальных контактов предложит навернуть метапрог-онлайна с тором. А из оставшихся 10 ещё 90% отсеется, когда он не сможет вразумительно ответить на вопросы о правовой чистоте.

ТС ищет на ЛОРе мифических «антиметапрогеров» и не понимает, что настоящие антиметапрогеры ждут его впереди и дейстовать будут совсем другими методами.

Жалко его.

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

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

liksys ★★★★
()
Последнее исправление: liksys (всего исправлений: 1)
Ответ на: комментарий от hobbit

Вся тема ололо-трололо. Тут ТС хорошо проводит время. Нашел кого жалеть. Нет никакого серьезного проекта, пока не доказано обратное.

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

Чего его жалеть, у него все хорошо - вона 11 версия уже вышла! Только и успевает счетчик накручивать;-)

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

ТС не поймет твой сарказм, полагаю. По будильнику я уже прошелся так, что котечка вызвался за пять минут запилить на метапроге будильник с нормальным интерфейсом (я таки наставиваю на таймере) и даже обещал видео процесса создания.

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

Конспирация из-за того, что для кодирования (рисования схем) прототипа метапроги используется ворованный лабвью.

Ты же понимаешь, что доказательств «ворованности» ни у тебя, ни у меня сейчас нет? (А ещё сейчас ТС в 8-й раз свернёт разговор на тему, можно ли считать нарушение EULA воровством, и вопрос, зачем он на самом деле шифруется, будет благополучно замылен.) Да, по совокупности признаков похоже на то, что ТС лабвью спиратил, и он некоторыми намёками это мнение поддерживает. Но доказательствами это всё не является.

И да, как комментатору, мне тоже пофиг, пиратит ли он лабвью. Я не переживаю за доходы NI, как ошибочно полагает ТС. (Да и своей беспрецедентной рекламной кампанией LabVIEW на ЛОРе он уже, наверное, заслужил Enterprise-версию в подарок. :) ) Но вот если бы я собирался поучаствовать в проекте, мне было бы совсем не безразлично, не пойдёт ли мой труд в корзину из-за сомнительного правового статуса означенного проекта.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 5)
Ответ на: комментарий от liksys

Все его фейлы - закономерный итог его пустого гонора и нежелания слушать других.

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

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

Ты меня с Котечкой не путаешь? Вот ему можно поставить на вид, что он укрепляет ТСа в ложных ожиданиях. Я-то как раз пытаюсь ставить неудобные вопросы (но делать это в максимально корректной форме).

И это… нашли дьявола, тоже мне…

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

Ты меня с Котечкой не путаешь?

Не существует никакого котечки. Все один трололо. Мое наблюдение. Уж оченьт синхронно они друг друга замещают.

Я-то как раз пытаюсь ставить неудобные вопросы (но делать это в максимально корректной форме).

Ему на твои вопросы откровенно по барабану.

И это… нашли дьявола, тоже мне…

Ну ты же начал с него жертву лепить.

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

Не существует никакого котечки. Все один трололо.

Ты реально веришь, что человек может в троллинг вкладывать столько сил?

Ну ты же начал с него жертву лепить.

Я не говорил про жертву, я говорил, что мне его жаль. А так сам виноват, конечно.

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

Вообще я без негатива. Извини если слишком резко выходит. Но увы в этой теме корректное общение не работает.

Ты реально веришь, что человек может в троллинг вкладывать столько сил?

Ну доказательств нет. Это правда. Но очень на то похоже. Я когда с ним спорил(все теперь в удаленных) прям как только statolog исчезает, начинает отвечать Metaprog. Перестарался он. Про вкладывание сил, почему нет. Примеров то таких много. Вон я тут HL Boom приводил. Завлекло человека, остановится уже сил не хватает.

Он тут ловит кайф. Не стоит он твоего сожаления.

Ну и чутка про проект. Тухло в проекте все, если он реально разбирается в программировании(а stasolog кое в чем разбирается) ему тот же будильник накидать раз плюнуть. Зато сколько тем, сколько эмоциий. На лоре опять же были примеры таких товарищей.

Ну вот подкинул еды. Нет все таки не зря большая часть здравомыслящих людей на лоре игнорят эти темы.

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

Мало ли, какая у него там точка зрения. Главное то, что его провал является фактом для адекватной части этого треда.

liksys ★★★★
()

После слияния веток с данными (или жесткими последовательностями выполнения) от противоположных условий дальнейшие блоки выполняются в обеих случаях

Позвольте-с, но эти Ваши условные схождения, выходит — изначально заложены в МЕРТВОПРОГ! Причём выступать условным схождением может совершенно любой узел! Даже в примере переворота строки видно, первый памьятач от пожирача является условным схождением. Какой бестактный плагиат с Вашей стороны — не иначе как позавидовали МЕРТВОПРОГ?

А как, позвольте поинтересоваться, реализованы эти Ваши схождения? Банальный goto на следующий после схождения блок, или заморочились как-то хитрее?

Вы, @metaprog, вот что: не валяли бы дурака, а заложили бы в Ваш… как бы это сказать — язык? хотя языком его назвать язык не поворачивается… в общем, заложили бы параллелизм. Тема, видите ли, востребованная, и весьма актуальная: процессоры-с, знаете, давно многоядерные, даже у нищуков хотя бы по два шара… мячика… в общем, о чём это Мы? Ах да! Уж с чем, а с наглядным параллелизьмом у текстовых языков беда. Прячут его за всякими .collect(), горутины вот весьма неплохи — но попробуйте простым взором на программу предсказать, когда сколько горутин, где и когда они закончатся и закончатся ли вообще! И уж тем более у C, который на уровне языка параллелизм не поддерживает вообще.

Поэтому в Метапрога параллелизм был бы весьма и весьма кстати. Причём весьма нагляден. Если бы Вы предложили язык с простотой C и наглядным параллелизмом в качестве гражданина, не побоимся этого слова, первого порядка — злые антиметапрогеры простили бы Вам и завязку на LabVIEW, и Wine, и психические проблемы, да и вообще все грехи! Поэтому, полагаем, весьма необходимо хоть в каком-то виде заложить параллелизм в Метапрог, в качестве задачи первого приоритета, даже приоритетнее Метапрога «на самом себе». Мы заметили, что у Вас уже используется libuv.h — вот неплохо бы на его основе, так сказать, и сделать. Блок параллельного расхождения, блок параллельного схождения, блок параллельного расхождения на n одинаковых потоков — вот и базовые основы параллелизма, а наложить это на диаграммы… красота же получится!

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

Позвольте-с, ну какие структуры данных? Обычные C-шные структуры, они же struct, а Вы тут же додумываете терминологию из компьютерной науки, о которой даже не упоминалось. И при этом ещё топикстартера ещё критикуют за неуцтво — а может, это и к лучшему? Когда мозги не забиты огромным багажом знаний, который замусоривает мышление массой лишних ассоциативных связей, мешает изобрести нечто по-настоящему инновационное?

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

А вот как, позвольте pointer’есоваться, у Вас с производительностью? У Нас прототип Метапрога дичайше тормозит, к тому же интерфейс совершенно непонятный: строки меню появляются, строки меню исчезают, блоки ползают за курсором… Да и Метапрог Онлайн процессор нагружает порядочно, не говоря уж о полной неюзабельности интерфейса (сам чатик ещё куда ни шло).

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