@ProLua

Страница 170 из 307
Snusmumriken
19.09.2017
15:20:40
Эм... скобочки обычные там
Ты понимаешь что ты говоришь? Я - нет.

Saphire
19.09.2017
15:22:54
В регулярных выражениях, а обычно именно они в таких случаях используются, для "захвата" группы символов используются обычные скобки. ^([a-z]+) на строке "abc123efg" группа \1 будет равна abc. ...и до меня только сейчас доперло, что \0 - всё, что нашли. Можно тогда было использовать "луч" {80,} - От 80ти символов и до бесконечности*

Snusmumriken
19.09.2017
15:23:19
Смотри, вот тут - протестированный живой пример. А ещё, мне нужны не группы а повторения символов "более 80".

Google
Snusmumriken
19.09.2017
15:25:27
Я не помнил что есть "лучи", поэтому влепил 100500. Пофигу. Последний вариант: найти: (\n[^\n]{80,}\n) заменить: \n--!!СОКРАТИ БОТВУ, МУДИЛА!!\1 Notepad++ не капчурит в \0 всё что нашли, поэтому нужен капчур. Эх.

Snusmumriken
19.09.2017
15:28:01
>Или еще лучше, \n error("...") -- \0 Ну это уже издевательство )))

Примерно так хочу
В общем, можно накатать "форматирователь", но это уже полноценная программа-парсер, а не три строчки регулярок )))) И никто кроме тебя этим заниматься не будет. Мне - лень, уже написал тебе детектор "строк больше чем". Искать конкатенации и разбивать - сам будешь )))

The Dude
19.09.2017
15:53:05
А напомните, плиз, почему в луа сделали по умолчанию глобальные переменные?

Где-то было обьяснение.

Vadim
19.09.2017
15:57:39
так заказали нефтяники? :)

// вообще, емнип, потому что так было в языке из которого lua развился

SOL, или как-то так

Рома
19.09.2017
18:14:28
Я часто пишу some_function( 'this is the ' .. beginning .. 'of very ' .. long .. 'пыщь пыщь' .. gsom .. 'string' ) все читаемо, главное, в такое очень удобно добавлять или убирать, ничего ты не понимаешь в скобках

Philipp
19.09.2017
18:26:30
А никто не сталкивался с проблемой rock_manifest file not found у Luarocks'a?

Google
Snusmumriken
19.09.2017
20:31:53
Я часто пишу some_function( 'this is the ' .. beginning .. 'of very ' .. long .. 'пыщь пыщь' .. gsom .. 'string' ) все читаемо, главное, в такое очень удобно добавлять или убирать, ничего ты не понимаешь в скобках
Тот факт что ты так пишешь - означает то, что ты не делаешь высокопроизводительную лабуду, не знаешь как работает пул строк, или же - никогда не работал со строками на несколько сотен мегабайт/гигабайт. Если бы знал, писал бы так: some_function(table.concat{ 'this is the', beginning, 'of very ', long, 'пыщ-пыщ', gsom, 'string' }) Ничего я не понимаю в скобках, мда )))

Рома
19.09.2017
21:03:24
Тот факт что ты так пишешь - означает то, что ты не делаешь высокопроизводительную лабуду, не знаешь как работает пул строк, или же - никогда не работал со строками на несколько сотен мегабайт/гигабайт. Если бы знал, писал бы так: some_function(table.concat{ 'this is the', beginning, 'of very ', long, 'пыщ-пыщ', gsom, 'string' }) Ничего я не понимаю в скобках, мда )))
ССЗБ, запили бенчмарк. Я бы сам запилил, но уже поздно и я точно уверен, лол, ну очевидно же! table.concat{} - тут глобальная переменная table достается из кладовки глобальных, из неё берется value по ключу concat, создается таблица, вызывается функция, и все это вместо того чтобы компилятор увидел: ага! да это же конкатенация! склею-ка я строки!

Snusmumriken
19.09.2017
21:04:02
Ох, окей : )

Snusmumriken
19.09.2017
21:07:27


Рома
19.09.2017
21:07:59
wtf из реп??

Philipp
19.09.2017
21:08:01
Снус

Snusmumriken
19.09.2017
21:08:15
И чем больше строк ты конкатенируешь, чем большего объёма - тем больше выгода от table.concat.

Philipp
19.09.2017
21:08:17
А нельзя просто в файл засунуть и отделить результат от кода?

Рома
19.09.2017
21:08:27
это наглый мухлеж

на реп не договаривались!

Snusmumriken
19.09.2017
21:09:18
rep - функция, увеличивающая объём ))) Могу без него. Прошу заметить, что реп есть и в том и в другом случаях )))

Рома
19.09.2017
21:12:51
Я от том писал, что конкотэнируй хоть 100 строк с переменными или без, компилятор должен понимать что происходит и в сотню раз быстрее делать дело, чем с вызовом функций и созданием таблицы, когда компилятор не понимает что происходит

Philipp
19.09.2017
21:13:15
Тебе же бенч показали))

Рома
19.09.2017
21:13:22
Но там уловки!

И вы с ним за одно

Google
Philipp
19.09.2017
21:13:31
Какие?

Рома
19.09.2017
21:13:52
Серьезно?

"Тот факт что ты так пишешь - означает то, что ты не делаешь высокопроизводительную лабуду, не знаешь как работает пул строк, или же - никогда не работал со строками на несколько сотен мегабайт/гигабайт." код: some_function( 'this is the ' .. beginning .. 'of very ' .. long .. 'пыщь пыщь' .. gsom .. 'string' )

Philipp
19.09.2017
21:14:44
Какие уловки?

Йо?

Рома
19.09.2017
21:19:27
Ну вот тот код изначальный и код снуса с rep

две разности

Snusmumriken
19.09.2017
21:20:12
Хе, кстати, как ни странно - да, неоднозначно : ) В одних случаях физически быстрее так, в других - иначе. Но нагрузка на сборщик мусора в любом случае меньше у меня.

На ванильной луа - гарантированно быстрее мой варик.

Рома
19.09.2017
21:23:54
Есть две ситуации: 1) Конкатенация обыкновенная, 'строка' .. переменная .. 'ещё строка', тут компилятор не тупой, делает все быстро. 2) Надо циклом составить одну большую строку, тут компилятор лажает, ведь в луа строки - не массивы байт, как в си, а уникальные ссылки на них, и все это приправлено магией, и concat приходит на помощь

Snusmumriken
19.09.2017
21:25:26
Компилятор есть только у luajit. Иначе - ничего у тебя нет, никто не оптимизирует писульки.



Snusmumriken
19.09.2017
21:29:25
А если увеличить циклы в десять раз, то первый варик прокатит за почти то же время, а без concat - упадёт от переполнения памяти.

Рома
19.09.2017
21:29:47
На ванильной луа - гарантированно быстрее мой варик.
Правда не могу опровергнуть, легаси проект, тупой старый руби с негодным старым openssl, божественный арч, переустановка, нет у меня луа пока. Потрудись пруф.

Philipp
19.09.2017
21:30:02
Что?

Рома
19.09.2017
21:30:21
local str = 'this is the ' .. beginning .. 'of very ' .. long .. 'пыщь пыщь' .. gsom .. 'string'

и все

неужели так сложно?

Philipp
19.09.2017
21:30:40
На малых строках разницы практически не будет

Snusmumriken
19.09.2017
21:30:44
Ага.

Google
Philipp
19.09.2017
21:30:45
Что вообще-то очевидно

Рома
19.09.2017
21:30:50
обернуть в цикл for i = 1, 100500 и вывести время

concat будет медленнее в сто раз

Snusmumriken
19.09.2017
21:31:17
Твой вариант даже быстрее на коротких строках и малых сроках, но засирает оперативку бешено. Потребление памяти я мерять не могу. А чистить всё равно придётся, и вот на это уйдёт эта "сотня времени", но чуть позже, особенно если ты часто вызываешь.

Опа, или могу мерять потребление памяти.



Но это - совсем уж "буферный" вариант.

Рома
19.09.2017
21:41:10
https://pastebin.com/Ss9bNdkm я это имел в виду

запусти, у меня луа временно не доступна, тут код concat маньячно-высоконагрузочный, что его не спасет

start = time() пропустил случайн

Admin
ERROR: S client not available

Рома
19.09.2017
21:43:25
и n забыл

Philipp
19.09.2017
21:44:20
Ты же понимаешь, что у тебя в первом цикле строка создается-удаляется?

И в твоем тесте никакого смысла нет?

Рома
19.09.2017
21:44:57
и там ещё косячок есть у меня

Snusmumriken
19.09.2017
21:45:01


Косячки подправил.

Philipp
19.09.2017
21:45:20
На мелких строках теряется

Рома
19.09.2017
21:45:26
concat(t, i — тут вместо i надо ''

Philipp
19.09.2017
21:45:31
А ты закэширую функцию, чтобы он не лез в глобал спейс

Google
Snusmumriken
19.09.2017
21:45:35
Да. А вот на заполнении буфера - тут всё круто.

Рома
19.09.2017
21:45:40
ровно в сто раз!

Snusmumriken
19.09.2017
21:45:49
Фил, ну прочитай, закешировано всё. Плюс у меня luajit, т.е. на кеширование пофиг.

Philipp
19.09.2017
21:46:05
Ой

Ссорян, болею

Хуже соображаю

А теперь на больших строках сравни

Ради интереса

Рома
19.09.2017
21:47:57
https://pastebin.com/HbY7JBDM без ошибок (вроде)

Snusmumriken
19.09.2017
21:49:31


Хмм.

Рома
19.09.2017
21:51:12
но нули после точки думают иначе

Philipp
19.09.2017
21:51:26
Что?

Рома
19.09.2017
21:51:34
concat(t, '', 1, 7) было чтобы concat зря длину не считал

да вы серьезно?)) 0.009 меньше 0.02! правда меньше!

Philipp
19.09.2017
21:52:35
У тебя разряды переноситься перестали?))

Типа в три раза быстрее

Snusmumriken
19.09.2017
21:53:51


Рома
19.09.2017
21:54:04
что такое "собирание"?

в пользу которого

Snusmumriken
19.09.2017
21:54:45
Собирание - типа без табличек и table.concat. Но для буферизации - table.concat в 100500 раз выгоднее.

И надо посмотреть на потребление памяти.

Рома
19.09.2017
21:55:41
во! без табличек и table.concat быстрее в целых 2.6309.... раз! печенька с полки моя1

Страница 170 из 307