Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Если тебе интересен 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.73 MB
Время: 0.091 c
15-1343939402
Юрий
2012-08-03 00:30
2013.03.22
С днем рождения ! 3 августа 2012 пятница


15-1329856202
Юрий
2012-02-22 00:30
2013.03.22
С днем рождения ! 22 февраля 2012 среда


2-1332577830
Pcrepair
2012-03-24 12:30
2013.03.22
TStringList и перевод символов в нижний регистр


15-1353837763
dummy_user
2012-11-25 14:02
2013.03.22
Вставка текста из .pas в .txt.


15-1336422605
Юрий
2012-05-08 00:30
2013.03.22
С днем рождения ! 8 мая 2012 вторник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский