Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Если тебе интересен Lua в Delphi   Найти похожие ветки 

 
DevilDevil ©   (2012-09-11 17:47) [0]

Привет, уважаемый форумчанин

Я являюсь разработчиком дорогой для меня библиотеки CrystalLUA(http://www.gamedev.ru/projects/forum/?id=140784). Цель проекта - избавить Delphi программиста от рутины связывания нативного кода и кода Lua. Кто не знает, Lua - самый распространённый скриптовый язык в мире.

Пишу это сообщение не только, чтобы на мой проект обратили внимание. Сейчас актуален другой вопрос. В середине октября я планирую приступить к большой переработке проекта. Среди ключевых нововведений - полная поддержка Unicode, события, и конечно же автобиндинг – механизм, благодаря которому необходимость в регистрации промежуточных калбеков может просто отпасть. Файл документации будет переведён на английский. Так вот мне как воздух сейчас нужны люди. Энтузиасты, способные не только использовать чужие наработки, но и участвовать в развитии проектов "зоны свободного ПО". Если ты посмотришь хотя бы в опубликованную Mind-карту - увидишь, что работы много и дело найдётся каждому. Заявленные фичи и так будут реализованы, просто со сторонней помощью они будут разработаны комфортнее; + можно реализовать вещи за пределами заявленного списка. Поэтому если ты считаешь, что можешь быть или хотел бы быть в чём-то полезен - жду сообщение в личку или по любому из контактов, указанных в ветке.

p.s. такое сообщение я оставляю на многих русскоязычных форумах. Потому что аудитория Delphi-программистов не велика. Lua используют ещё меньше. А для продуктивной работы с иностранцами не хватит моего знания языка.

в любом случае спасибо за внимание!


 
уважаемый форумчанин   (2012-09-11 17:54) [1]

Удалено модератором


 
DevilDevil ©   (2012-09-11 18:39) [2]

Удалено модератором


 
уважаемый форумчанин   (2012-09-11 18:42) [3]

Удалено модератором


 
Kerk ©   (2012-09-11 18:42) [4]

Чем лучше/хуже по сравнению с Lua4Delphi ?


 
Anatoly Podgoretsky ©   (2012-09-11 18:44) [5]


> Кто не знает, Lua - самый распространённый скриптовый язык
> в мире.

И на нем пишут боевые вирусы, типа Flamer.


 
DevilDevil ©   (2012-09-11 18:49) [6]

> Чем лучше/хуже по сравнению с Lua4Delphi ?

принципиально разные подходы
Lua4Delphi использует кодогенерацию и врапперство над LuaAPI

CrystalLUA работает с RTTI, избавляет пользователя от рутины, + ряд фишек (например общее глобальное пространство, точки вместо двоеточий и др.). Я сильно не углублялся в Lua4Delphi, то что я видел - мне не понравилось

> Anatoly Podgoretsky ©   (11.09.12 18:44) [5]
не понял смысла сообщения


 
KSergey ©   (2012-09-11 19:24) [7]

> DevilDevil ©   (11.09.12 17:47)
>  Так вот мне как воздух сейчас нужны люди. Энтузиасты, способные
> не только использовать чужие наработки, но и участвовать
> в развитии проектов "зоны свободного ПО".

Спешу вас разочаровать:  "зона свободного ПО" - чушь собачья. Равно как и энтузиасты. Ну в смысле ПО "свободное" (а вернее - free, а это другое) - оно есть, но вовсе не потому, что его делают энтузиасты.

Правда я не знаю как обстоят дела в забугорье, но точно могу сказать, что у нас - никак. Знаю конкретные примеры. В самом лучшем случае найдутся три калеки, которые добавят до зарезу нужные им 5 строк (если повезет, то еще и в общей струе проекта, не сломав его), на этом исчезнут.

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

Попробуй направить усилия и в самом деле за бугор, может там ты сумеешь при достаточной само-рекламе заинтересовать китайца, который хочет как-то пробиться и хватается за разные разности; хотя с Дельфи там ловить нечего, дельфи там практически нет.

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

Такая вот фигня.


 
KSergey ©   (2012-09-11 19:33) [8]

И еще вопрос, если можно.
А нафига это вообще все надо? Есть рекрасный язык дельфи, делай все что хочешь.
Посмотрел приводимые примеры по ссылке - и что? нафига?
Или суть лишь в подключении интерпретируемого скриптового языка?
По-моему проще тогда на .NET все сваять, там оно волшебно встроено. Ну если в этом именно задача и проект пишется с нуля.


 
DevilDevil ©   (2012-09-11 19:33) [9]

> KSergey ©   (11.09.12 19:24) [7]

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

Найдётся кто-то - круто. Не найдётся - справимся.
В целом, уже есть несколько человек, которые не прочь чуть-чуть помочь проекту.
Мне именно это и нужно


 
DevilDevil ©   (2012-09-11 19:35) [10]

> А нафига это вообще все надо? Есть рекрасный язык дельфи,
>  делай все что хочешь.


Всё верно
только существуют задачи, которые при помощи скриптов с удовольствием решаются

> По-моему проще тогда на .NET все сваять, там оно волшебно
> встроено. Ну если в этом именно задача и проект пишется
> с нуля.


Lua для скриптов значительно распространённей
да и простой он, удобный. Почему нет


 
Inovet ©   (2012-09-11 20:08) [11]

Удалено модератором


 
брат Птибурдукова   (2012-09-11 20:17) [12]

Удалено модератором


 
TREEDWDFEGEDWDDD_GEN   (2012-09-12 16:13) [13]

Удалено модератором


 
брат Птибурдокова   (2012-09-12 16:33) [14]

Удалено модератором


 
Цукор5   (2012-09-13 23:07) [15]


> Всё вернотолько существуют задачи, которые при помощи скриптов
> с удовольствием решаются


Пару примеров можно? Чтобы понятней стало.


 
Jeer ©   (2012-09-13 23:10) [16]


> да и простой он, удобный. Почему нет


Только при чем тут Delphi :)
Вот я им пользуюсь в FEMM и просто счастлив.


 
DevilDevil ©   (2012-09-14 10:57) [17]

> Цукор5   (13.09.12 23:07) [15]
> Пару примеров можно? Чтобы понятней стало.


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

> Jeer ©   (13.09.12 23:10) [16]
> > да и простой он, удобный. Почему нет
> Только при чем тут Delphi :)


Программирование скриптами - особая часть программирования. Которая нужна не всем. Но если Вы решили использовать скрипты в своём продукте, и решили выбрать Lua - то нужно будет связать нативное приложение со скриптами. Вот для этого как раз и существуют библиотеки-связки. Самая удобная для Delphi - скорее всего CrystalLUA.


 
Цукор5   (2012-09-14 13:24) [18]

При чем здесь игры? Пару примеров при связки с Delphi. Я не пойму. Где, как и для чего это нужно?


 
Kerk ©   (2012-09-14 13:26) [19]


> Цукор5   (14.09.12 13:24) [18]
> Где, как и для чего это нужно?

Где угодно, где пользователь может писать свои скрипты. В чем вопрос-то?


 
DevilDevil ©   (2012-09-14 22:04) [20]

> Цукор5   (14.09.12 13:24) [18]

> Где угодно, где пользователь может писать свои скрипты. В чем вопрос-то?
+1

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


 
Джобер   (2012-09-14 22:27) [21]


> При чем здесь игры?

Помнится, еще в старенькой игрушке Blobby Volley можно было программировать ботов на Lua.
http://constant-m.narod.ru/images/3volley.jpg


 
DevilDevil ©   (2012-09-14 22:35) [22]

> Джобер   (14.09.12 22:27) [21]

дьявольская конечно игрушка )


 
KSergey ©   (2012-09-15 19:30) [23]

Я понял!
Пример: 1С


 
Jeer ©   (2012-09-15 22:58) [24]


> Пример: 1С


Это даже не пример - адынсы это отврат.

Я уже приводил пример с FEMM. Отличный продукт, мощный аналитический движок + возможность автоматизации геометрических построений и вычислений через Lua.


 
Rouse_ ©   (2012-09-15 23:34) [25]

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


 
Rouse_ ©   (2012-09-15 23:58) [26]

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


 
Джобер   (2012-09-16 00:16) [27]

Имхо, автор чрезмерно увлекается ассемблерными вставками. Мало кто захочет в таком коде разбираться.


 
Rouse_ ©   (2012-09-16 00:22) [28]


> Джобер   (16.09.12 00:16) [27]
> Имхо, автор чрезмерно увлекается ассемблерными вставками. Мало кто захочет в таком коде разбираться.

Нужно писать так - я не знаю ассемблер, мне не понятен ваш код :)


 
Pavia ©   (2012-09-16 00:26) [29]


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

Не знаю зачем вам это понадобилось. Но что-бы себя комфортно чувствовать надо что-бы циклы в скрипте автоматически парализовались и указатели 64 битные. И компьютер должен иметь не менее 16 ядер и RAM 64 ГБайта (или SSD со скоростью не менее 1ГБайта/с)


 
Rouse_ ©   (2012-09-16 00:29) [30]


> Но что-бы себя комфортно чувствовать надо что-бы циклы в
> скрипте автоматически парализовались и указатели 64 битные

неактуально для 32 битного отладчика

> И компьютер должен иметь не менее 16 ядер и RAM 64 ГБайта
> (или SSD со скоростью не менее 1ГБайта/с)

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


 
Германн ©   (2012-09-16 02:24) [31]


> Нужно писать так - я не знаю ассемблер, мне не понятен ваш
> код :)

Вот тут +1
Знание ассемблера не обязательно, но для работы над некоторыми задачами - весьма желательно. Вплоть до отказа претенденту в приёме на работу.


 
DevilDevil ©   (2012-09-16 04:10) [32]

> Rouse_ ©   (15.09.12 23:34) [25]
> Выглядит не плохо, возможно присоединюсь к проекту чуть попозже


ok

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


CrystalLUA - это один *.pas файл, который автоматизирует связку нативного Delphi кода с компилятором-интерпретатором Lua (в *.dll)
автор я

> Имхо, автор чрезмерно увлекается ассемблерными вставками.
>  Мало кто захочет в таком коде разбираться.


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

Ожидаемую помощь я делю на три части: тестирование, проработка информации, разработка сторонних средств

Ну то что тестировать нужно будет на разных данных и платформах, думаю, объяснять не надо.
К части "проработка информации" как раз относится например изучение отличий RTTI, законов компиляции, отличия для платформ. Под "проработкой информации" подразумевается полное теоретическое изучение, а так же практические наработки кодом, которые я уже смогу использовать в библиотеке. Каждую "область проработки" я сопровождаю документом с чётким описанием: 1) почему такая проработка вообще нужна. 2) какие приоритеты. 3) какие шаги предлагаю. К примеру сейчас я пишу документ по interface, OLE, Variant. Если один чувак проработает эту информацию, то скорее всего в скриптах появится возможность использовать Excel, Word и другие Ole-контейнеры так же удобно, как бы это делаем в Delphi (наверно и в FPC). Если кто-то из посетителей этого форума проявит желание проработать вопрос полной совместимости с FreePascal и Linux, Mac OS - то я так же создам полный документ со всем описанием, что нужно проработать.

Сторонние средства - это программные продукты, которые каким либо образом помогают в развитии или использовании библиотеки. К примеру, если получится, один чувак реализует универсальную систему тестирования. И тогда возможно огромная гора проблем с тестированием отпадёт. Один человек, кстати с этого форума, возможно разработает IDE. И тогда разрабатывать Lua скрипты можно будет не только с подсветкой синтаксиса, но и всплывающими подсказками, управлениями проектами, дебагом - всё с учётом именно особенностей работы c CrystalLUA. Существует и ещё 1-2 сторонних средства, которые желательно было бы разработать.

Я пишу "возможно", "желательно", "может быть" - потому что проект не коммерческий и каждый участник может как реализовать, так и не реализовать. Ну а я их просто не потяну, потому что свою большую область работ я уже обрисовал. (можно посмотреть в Mind-карте на том форуме)


 
Джобер   (2012-09-16 14:43) [33]

Я не знаю ассемблер, мне не понятен ваш код.

А, кстати, под какой лицензией будет распространяться сей продукт из "зоны свободного ПО"?


 
DevilDevil ©   (2012-09-16 15:08) [34]

> Джобер   (16.09.12 14:43) [33]

> Я не знаю ассемблер, мне не понятен ваш код.
я ещё раз говорю. НЕ надо вдаваться в дебри внутренностей этой библиотеки. Она уже сейчас сложна (даже для меня), будет ещё сложнее (наверно), и в ней точно будет больше ассемблера.

Просто берёте и используете по документации. Всё сделано для того, чтобы "пользовательский" интерфейс библиотеки был крайне простым и понятным. Внутренние сложности - это уже на мне.

> А, кстати, под какой лицензией будет распространяться сей
> продукт из "зоны свободного ПО"?


По лицензии "берёшь и используешь где тебе самому хочется"


 
Джобер   (2012-09-16 15:23) [35]

> По лицензии "берёшь и используешь где тебе самому хочется"

А могу я, например, поменять название и начать продавать эту библиотеку от своего имени?


 
Inovet ©   (2012-09-16 16:45) [36]

> [29] Pavia ©   (16.09.12 00:26)
> что-бы циклы в скрипте автоматически парализовались

Это как? в летаргический sleep уходили?:)


 
DevilDevil ©   (2012-09-16 18:07) [37]

> А могу я, например, поменять название и начать продавать
> эту библиотеку от своего имени?


Да.


 
DVM ©   (2012-09-16 19:56) [38]


> DevilDevil ©   (16.09.12 04:10) [32]


> В это коде не нужно разбираться. Я даже скажу больше. В
> следующей версии ассемблера станет ещё больше, потому что
> максимум производительности - один из приоритетов.

Имхо, чем больше будет там ассемблера тем меньше будет желающих использовать эту библиотеку. Библиотека для Delphi - зачем там ассемблер? Если уж добавляете ассемблерные вставки, делайте директивы условной компиляции {$ifdef PURE_PASCAL} или что то в этом духе и вариант кода на паскале.


 
DevilDevil ©   (2012-09-16 21:13) [39]

> Имхо, чем больше будет там ассемблера тем меньше будет желающих
> использовать эту библиотеку.


у меня свои приоритеты
если кто-то не знает ассемблер или не хочет производительности - это не мои проблемы


 
DVM ©   (2012-09-16 23:12) [40]


> DevilDevil ©   (16.09.12 21:13) [39]


> у меня свои приоритеты

тогда не найдешь ты людей


 
DevilDevil ©   (2012-09-16 23:16) [41]

> DVM ©   (16.09.12 23:12) [40]

уже нашёл
осталось всего пару областей "не закрытых"

и то все эти области второстепенны


 
Jeer ©   (2012-09-16 23:35) [42]

Для меня Lua самодостаточный язык, которым пользуюсь иногда в рамках самодостаточности, иногда в рамках Femm.
http://www.femm.info/wiki/HomePage


 
DevilDevil ©   (2012-09-17 00:38) [43]

> Jeer ©   (16.09.12 23:35) [42]

Ну да
есть и LuaJIT, и много либ для юзания функций ОС например
не знаю
лично мне как-то дискомфортно писать всё приложение на языке с динамической типизацией и простыми типами. Я использую Lua только по его прямому назначению.


 
Inovet ©   (2012-09-17 01:08) [44]

Удалено модератором


 
Германн ©   (2012-09-17 01:28) [45]


> DVM ©   (16.09.12 23:12) [40]
>
>
> > DevilDevil ©   (16.09.12 21:13) [39]
>
>
> > у меня свои приоритеты
>
> тогда не найдешь ты людей
>

Неужели столь многих отпугивает ассемблер?


 
Inovet ©   (2012-09-17 01:31) [46]

Удалено модератором


 
Германн ©   (2012-09-17 02:13) [47]

Удалено модератором


 
Inovet ©   (2012-09-17 08:19) [48]

> [47] Германн ©   (17.09.12 02:13)
> Давай не будем переходить на личности в их отсутствие.

О да, ассемблер - личность.:) Но даже когда его не видно, он незримо присутсвует за каждой строчкой кода.

Имхо, зря на автора наехали по поводу асм вставок. Если они существенно улучшают производительность, и средствами Делфи её невозможно улучшить, так чем плохо. А на сколько, кстати, улучшают? На 5-10% или в 5-10 раз?


 
Jeer ©   (2012-09-17 09:10) [49]


> А на сколько, кстати, улучшают?


Например, asm-аналог функции Trim() выполняется в 4-5 раз быстрее.


 
Inovet ©   (2012-09-17 09:22) [50]

> [49] Jeer ©   (17.09.12 09:10)
> Например, asm-аналог функции Trim() выполняется в 4-5 раз
> быстрее.

Отдельные функции - понятно, могут. Я про данный проект, как я понял, - это обёртка над движком.


 
DevilDevil ©   (2012-09-17 09:45) [51]

из документации:

Второй “минус” – не идеальная производительность. Все мы должны понимать, что использование Lua API напрямую чисто теоретически даёт лучшую производительность, нежели при использовании универсальной библиотеки. С другой стороны, все используют универсальные решения потому, что универсальные подходы минимизируют рутину. Так вот CrystalLUA как универсальная система скорее всего работает быстрее аналогичных систем. Связано это с тщательно продуманными и реализованными схемами взаимодействия Lua с нативным кодом, умным менеджментом памяти, ассемблерной реализацией в узких местах. Существует мнение, что такой скрупулёзный подход к оптимизации не оправдан в случае со скриптами. Не знаю. Мне греет душу мысль, что я выжал максимум производительности.


 
Jeer ©   (2012-09-17 10:04) [52]

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

Особенно вот такие, как у автора, трансляции:

function IncludePathDelimiter(const S: string): string;
asm
 jmp SysUtils.IncludeTrailingPathDelimiter
end;


 
DVM ©   (2012-09-17 10:08) [53]


> Германн ©   (17.09.12 01:28) [45]


> Неужели столь многих отпугивает ассемблер?

Не знаю как другие, но я стараюсь избегать использование чужого кода со вставками на ассемблере. И дело даже не в том, что я его можно сказать что практически не знаю. Дело в том, что в обычном коде (если это не какая либо защита или какой то финт ушами, который средствами языка не провернуть, а очень надо или очень-очень критичный до быстродействия кусок) - это ловля блох и попытка выиграть какие то проценты производительности (в целом по всей программе) ценой полной несопровождаемости программы, ценой непереносимости на другие архитектуры (даже при переходе от 32 бит к 64 будут проблемы). Ну и зачем делать машанину кода на ассемблере и паскале? Я не вижу смысла.


 
знайка   (2012-09-17 10:24) [54]


> из документации:
Так она еще и не производительная? :)


 
Jeer ©   (2012-09-17 10:42) [55]


> но я стараюсь избегать использование чужого кода со вставками
> на ассемблере.


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


 
DevilDevil ©   (2012-09-17 11:20) [56]

> Jeer ©   (17.09.12 10:04) [52]
> DVM ©   (17.09.12 10:08) [53]

я достаточно давно интересуюсь высокопроизводительным программированием. Использую и ЯВУ, и ассемблер, и С++ интрисинки. Прекрасно взвешиваю различные подходы и выбираю на мой взгляд оптимальный путь, согласно приоритетам. Поэтому, дорогие участники дискуссии, если у вас есть острая потребность поделиться друг с другом авторитетными мнениями на счёт выбранных подходов в той или иной библиотеке - создайте пожалуйста свою ветку. Лично мне ничего нового по оптимизации вы не скажете. И я не для того создал эту ветку, чтобы познакомиться с очередным "форумным умником". Прежде чем отписать что-то в этой ветке - подумайте, будет ли мне это полезно и насколько. Иногда лучше ничего не писать, чем писать своё "авторитетное" мнение.


 
Jeer ©   (2012-09-17 11:43) [57]


> подумайте, будет ли мне это полезно и насколько.


Да ну ?

Впрочем, на Ваш проект внимание обратили, это факт :)


 
DevilDevil ©   (2012-09-17 11:50) [58]

> Впрочем, на Ваш проект внимание обратили, это факт :)

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


 
Jeer ©   (2012-09-17 11:58) [59]

Я, вроде, о деньгах ни слова :)


 
DVM ©   (2012-09-17 12:03) [60]


> DevilDevil ©   (17.09.12 11:20) [56]

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


 
DevilDevil ©   (2012-09-17 12:14) [61]

> DVM ©   (17.09.12 12:03) [60]

Давай я тебя немножечко поучу

В любом деле, чтобы определить, что плохо, а что хорошо - надо расставить приоритеты. Для чего вообще нужна библиотека CrystalLUA? Для того чтобы максимально облегчить труд программиста при связывании скриптов на Lua и своего нативного кода. Какие основные требования к такому средству? Конечно же удобство. Т.е. чтобы возможностей было много, каждая возможность была интуитивно понятна, чтобы каждая возникшая ошибка была автоматически определена и максимально локализована. В качестве дополнительного требования - чтобы такой универсальный подход не бил по производительности. Всем этим требованиям библиотека удовлетворяет, а будет удовлетворять ещё больше.

Что хорошо и плохо согласно твоим личным приоритетам - лишняя информация для меня. Я тебя выслушал, обмозговал, сделал выводы.


 
app ©   (2012-09-17 12:18) [62]

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


 
DevilDevil ©   (2012-09-17 12:27) [63]

Удалено модератором


 
Inovet ©   (2012-09-17 13:17) [64]

> [52] Jeer ©   (17.09.12 10:04)
> jmp SysUtils.IncludeTrailingPathDelimiter

Не, джамп в функцию - это некошерно. Сразу же надо, чтобы одинаковые фреймы были, а выигрыш близок к нулю.


 
Германн ©   (2012-09-17 13:42) [65]


> Особенно вот такие, как у автора, трансляции:
>
> function IncludePathDelimiter(const S: string): string;
> asm
>  jmp SysUtils.IncludeTrailingPathDelimiter
> end;

Хм. Такие асм-вставки мне тоже не нравятся.


 
app ©   (2012-09-17 13:43) [66]

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

И не надо спорить с модератором. Я последний раз пропускаю подобное.


 
DevilDevil ©   (2012-09-17 14:28) [67]

Удалено модератором


 
Kerk ©   (2012-09-17 14:37) [68]


> DevilDevil ©   (17.09.12 14:28) [67]

Ты бы лучше объяснил что конкретно тебе дают такого рода оптимизации:

function IncludePathDelimiter(const S: string): string;
asm
 jmp SysUtils.IncludeTrailingPathDelimiter
end;


 
DevilDevil ©   (2012-09-17 14:45) [69]

> Kerk ©   (17.09.12 14:37) [68]
> Ты бы лучше объяснил что конкретно тебе дают такого рода
> оптимизации:


Библиотека компилируется в двух режимах: самостоятельная, и в режими совместимости с движком CrystalEngine (используя модуль SysUtilsEx). Функция IncludePathDelimiter есть враппер над IncludeTrailingPathDelimiter() и существует только потому что IncludePathDelimiter() лично мне кажется удобнее и понятнее. Пользователь CrystalLUA эту функцию не видит.

Почему здесь джамп, а не обычный вызов:
function IncludePathDelimiter(const S: string): string;
begin
 Result := IncludeTrailingPathDelimiter(S);
end;


Можно было этого не делать. Но я эстет. И я знаю что в обычной pascal реализации будет создан try/finalize код для обслуживания временной строковой переменной


 
DVM ©   (2012-09-17 14:50) [70]


> DevilDevil ©   (17.09.12 14:28) [67]


> Любое некорректное высказывание в адрес моего детища

А какое из высказываний было некорректным? По-моему тут все предельно корректны, указывают на потенциальные недостатки, хоть ты и не просил, но тут же форум в конце концов.

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


 
DevilDevil ©   (2012-09-17 14:52) [71]

> Kerk © (17.09.12 14:37) [68]

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


 
Inovet ©   (2012-09-17 14:55) [72]

Удалено модератором


 
DevilDevil ©   (2012-09-17 14:59) [73]

Удалено модератором


 
DevilDevil ©   (2012-09-17 15:02) [74]

Удалено модератором


 
Kerk ©   (2012-09-17 15:17) [75]


> DevilDevil ©   (17.09.12 14:45) [69]

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

Надеюсь, не примешь за некорректное высказывание :)


 
Inovet ©   (2012-09-17 15:19) [76]

> [74] DevilDevil ©   (17.09.12 15:02)

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


 
Jeer ©   (2012-09-17 15:21) [77]


> DevilDevil ©   (17.09.12 15:02) [74]


"Не держи других за дураков и они станут к тебе относится как к умному, возможно" (С)

На асме такие штучки, как jump в функцию действительно используются, но при прослойке "компилятор[ы]", такие технические приемы могут вызвать недоверие к внедрению asm-а.

А то, что ты сделал переименование под свое восприятие Мира - в яслях будешь объяснять.

Вот и все.

А так, да - развлекайся со своей биб-кой, сколько душе угодно.


 
Inovet ©   (2012-09-17 15:24) [78]

> [75] Kerk ©   (17.09.12 15:17)
> Все-таки такие микрооптимизации в ущерб смыслу, имхо, зло.

Не только в ущерб смыслу, но о потенциально в ущерб надёжности.


 
DevilDevil ©   (2012-09-17 15:26) [79]

> Надеюсь, не примешь за некорректное высказывание :)

не восприниму )

я всегда в таких моментах говорю "есть вещи дороже чем деньги, есть вещи важнее чем секс". Работа должна приносить удовольствие. А я эстет. И мне стрёмно понимать, что какие то там переменные могут создаваться и удаляться в finally для такой милипизерной функции-враппера. Так что считай эту функцию не оптимизированной по скорости выполнения, а оптимизированной по удовольствию в её использовании )


 
DevilDevil ©   (2012-09-17 15:32) [80]

> Inovet ©   (17.09.12 15:19) [76]

> Следует отличать высказывание мнения, притом обоснованного,
>  от оскорбления в адрес твоего бесспорно любимого детища
> и тебя лично.


Давай и я пролью свет на твоё мировосприятие. Существует грань между мнением и оскорблением(критикой). Она тонка, но она существует. Когда человек высказывает мнение, он концентрирует внимание на себе (как это делает Kerk). Когда человек оскорбляет(критикует) - он концентрирует внимание на объекте/человеке, залезая, как я уже сказал, на чужую "территорию". Начинай все свои предложения с "мне кажется может быть", и я вряд ли буду расценивать их как оскорбления


 
Inovet ©   (2012-09-17 15:41) [81]

Удалено модератором


 
DevilDevil ©   (2012-09-17 15:44) [82]

Удалено модератором


 
Jeer ©   (2012-09-17 15:46) [83]

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

И это мне не кажется, в этом я уверен.

Щедевральная функция:

function DynArrayLength(var DynArray): integer;
asm
 mov eax, [eax]
 test eax, eax
 jz @exit
 mov eax, [eax-4]
 @exit:
end;

Тест DynArrayLength(..)

DynArrayLength(..): 30 ticks
DynArrayLength(..): 31 ticks
DynArrayLength(..): 34 ticks
DynArrayLength(..): 34 ticks
DynArrayLength(..): 34 ticks
DynArrayLength(..): 33 ticks
DynArrayLength(..): 32 ticks
DynArrayLength(..): 33 ticks
DynArrayLength(..): 33 ticks
DynArrayLength(..): 33 ticks
DynArrayLength(..): 33 ticks
DynArrayLength(..): 33 ticks

Тест Length(..)
Length(..): 34 ticks
Length(..): 34 ticks
Length(..): 37 ticks
Length(..): 35 ticks
Length(..): 35 ticks
Length(..): 35 ticks
Length(..): 34 ticks
Length(..): 34 ticks
Length(..): 35 ticks
Length(..): 34 ticks
Length(..): 34 ticks
Length(..): 34 ticks
Length(..): 34 ticks
Length(..): 35 ticks

Адин тик выиграли :)


 
Inovet ©   (2012-09-17 15:46) [84]

> [82] DevilDevil ©   (17.09.12 15:44)

Верю.


 
DevilDevil ©   (2012-09-17 15:49) [85]

Удалено модератором


 
Inovet ©   (2012-09-17 15:50) [86]

Удалено модератором


 
Jeer ©   (2012-09-17 15:50) [87]


> Работа должна приносить удовольствие. А я эстет.


Не ? Не ошибся ?

Допускаю, что бывают особые случаи.


 
Rouse_ ©   (2012-09-17 20:22) [88]

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

Зачем упираться в реализацию кода (кстати код хороший по большей части, что редко встречается), если кто хочет рассмотреть эту часть я готов подискутировать продемонстрировав реализацию АПИ, которые вы используете ежедневно не вникая в суть, где так-же встретится и непонятный многим ассемблер и прочие нетривиальные трюки.
Зачем спрашивать для чего нужна оптимизация? Почему нельзя увидеть что даже в сокращении одного такта мы может выиграть миллиард тактов на разборе? :)
Вопрос был в поиске разработчиков, а не в поиске критиков, критиков у нас тут весь форум практически.

Ну и в конце концов не переходите на личности, уходя в оффтоп.
Работа автором проведена хорошая, результат юзабелен уже сейчас, всем этим он делится с вами просто так - пользуйтесь.

Ну и резюмирую - при переходе на личности, ветку удалю, Анатолий добрый - он обычно только закрывает :)


 
DevilDevil ©   (2012-09-17 21:31) [89]

> Rouse_ ©   (17.09.12 20:22) [88]

благодарю


 
Anatoly Podgoretsky ©   (2012-09-17 21:47) [90]

> Rouse_  (17.09.2012 20:22:28)  [88]

В назидание другим.


 
Германн ©   (2012-09-18 02:00) [91]

Удалено модератором



Страницы: 1 2 3 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.74 MB
Время: 0.07 c
15-1342270401
Студент_1234
2012-07-14 16:53
2013.03.22
Напомните функцию, которая реагирует на Input.


15-1340596830
ArchValentin
2012-06-25 08:00
2013.03.22
Обучение


15-1334149857
AV
2012-04-11 17:10
2013.03.22
Как отменить умный поиск AdobeReader(v8.1.2)


2-1331794898
bash77
2012-03-15 11:01
2013.03.22
очистить массив, удалить или еще чего с ним


15-1351197002
Юрий
2012-10-26 00:30
2013.03.22
С днем рождения ! 26 октября 2012 пятница