DevilDevil
А какая помощь нужна?
R1mush
стучись в аську
в зависимости от того что умеешь и что интересно
Как и обещал, середина октября наступила
Старт работы над новой версией CrystalLUA начался
Рабочие руки по прежнему нужны. Так что если есть желание поучаствовать в проекте - контакты даны
Это будет нечто :)
ковыряюсь с библиотекой, решил изучить как передаются массивы из Lua в нативную прогу и обратно.
зарегистрировал свой тип - динамический массив строк. создал в скрипте этот массив. передаю его в прогу, но приезжает указатель, а как обратиться к элементам массива? Приводить тип из поля DATA? В хелпе этот вопрос упущен оказался.
Второй вопрос - я хочу сделать анализатор строк в массиве, который считывает хост, строк не так и много - всего десятка полтора за один раз (это типа конфиг), но их надо обрабатывать и изменять очень много раз... межет миллион, а может и 100 миллионов, поэтому очень важна скорость - как лучше всего сделать доступ к данным? Сделать свой класс, чтобы разбирать большую часть на хосте, а логику управления вынести в скрипт. Тягать туда-сюда массив или таблицу и обрабатывать целиком в скрипте? Что более затратно по времени?
Просто результат обработки данных в скрипте мне надо сохранить обратно, т.е. данные должны постоянно модифицироваться и сохраняться.
Как успехи с unicode версией ?
Всем привет. DevilDevil сейчас забанен до 27 декабря (по собственному желанию чтобы не отвлекаться от работы), поэтому сейчас не может ответить, попросил меня написать это сообщение. По всем вопросам можете писать ему в icq.
На данный момент активно ведутся работы по следующим направлениям:
- Unicode
- оптимизация производительности
- локализация и детализация ошибок
В январе планируется релизнуть бета версию обновлений с дублированием текущего функционала. Но работы ещё много, очень нужны профессиональные руки для помощи проекту. Не нужно разбираться в дебрях CrystalLUA, необходима проработка технологий на стороне. А интеграцией их в CrystalLUA будет заниматься DevilDevil. В общем опять таки пишите ему в icq.
я вышел, ещё раз спасибо Vga
grumbler1
> зарегистрировал свой тип - динамический массив строк. создал в скрипте этот
> массив. передаю его в прогу, но приезжает указатель, а как обратиться к
> элементам массива? Приводить тип из поля DATA? В хелпе этот вопрос упущен
> оказался.
должно работать так
type TMyStrings = array of string; PMyStrings = ^TMyStrings; procedure ProcessMyStrings(var MyString: TMyStrings); begin // здесь твой код end; procedure luaProcessMyStrings( const Arg: TLuaArg); var Arr: PMyStrings; begin Arr := Arg.AsArray.Data; ProcessMyStrings( Arr^); end;
столкнулся с чем-то непонятным. работаю в скрипте луа с таблицей, именованные поля. Примерно до 10000 элементов таблица работает на ура, затем начинаются тормоза и уже к 20000 элементов тормоза идут жуткие. Условно вставка 22000 занимает более 200 секунд. Переделал полностью на индексный режим (отказался от именованных полей) - 22000 элементов вставляются за пару секунд... Странно то, что до 10000 работа идет достаточно шустро, а затем резко падает скорость. Может есть какая-то фишка, влияющая на скорость? куда копать хоть? или копать бесполезно?
grumbler1
ну во-первых, ты должен понимать, что работа со строками - долгая вещь. Работа со строками в Lua ещё дольше, потому для каждой строки дополнительно находится хеш-код и происходит сравнение с другими строками, чтобы избежать дублирования одинаковых строк. Во-вторых, я не думаю, что Lua рассчитан на такое количество уникальных идентификаторов. Ты мог упереться в большое количество хеш-коллизий или какие-то проблемы с перевыделением пула памяти, может быть чистка мусора.
в общем я бы посоветовал реализовать такую специфическую работу с данными на нативной стороне. или если есть возможность - конечно использовать индексы
по большому счёту я как программист силён в оптимизациях. То есть я мог бы тебе помочь в твоей задаче. Но. Во-первых, это нужно решать через личку (или icq). Во-вторых, я не сделаю это бесплатно. Либо за плату, либо за существенный вклад в развитие библиотеки
А скоро ли будет бета версия с поддержкой Unicode ?
AndrewFord
хотел в конце январе. Сроки сдвигаются на февраль-март
я слишком много времени трачу на поиски сторонних сил. Присоединяйся. Icq обозначен на первой странице
DevilDevil, спасибо за предложение. как я уже писал - задачу решил переходом на индексы, тормоза же было интересно было вычислить из академического интереса. Опять же просто интересно, как игры типа сталкера умудряются рулить большим количеством объектов на стороне ЛУА, если такие тормоза со строками уже на 20000...
grumbler1
очень просто
они не обрабатывают такое огромное количество строк
столкнулся с непонятным
передаю в хост строку
return "\n"
в хосте получаю один символ $#0a, $#0d куда-то потерялся.
Передаю
return "1\n"
в хосте получаю два символа '1'$#0a, $#0d куда-то снова потерялся.
Сохраняю эту же строку в файл myfile.write("\n") - все ок, два байта CR LF, как и положено.
в чем прикол может быть, никто не сталкивался?
передавай еще и \r если так нужен возврат коретки.
Тема в архиве.