Форум: "Прочее";
Текущий архив: 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.138 c