![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Предложение отказаться от ASM версии
Yury Sidorov © (2007-09-14 13:39:00)Моя ветка KOL-CE уже достаточно стабильна и в ближайшем будущем хотелось бы объединить мою и основную ветки. Кроме портирования под Lazarus и wince мной было сделано много исправлений и улучшений (например, скорость ScrollBox-а).
Но объединению мешает ASM версия, которую я у себя совсем не трогал. Т.е. PAS версия абсолютно рассинхронизирована с ASM версией, которая для FPC не используется вообще.
Плюсы ASM версии:
1. Экономия нексольких килобайт кода, но это актуально только для программ типа Hello world.
Минусы:
1. Трудно поддерживать асм и пас версии одновременно. Даже Владимиру Кладову.
2. Иногда асм и пас версии процедур работают по разному. Т.е. вероятность глюков удваивается.
3. У большинства пользователей KOL нет знаний или желания править асм версию.
4. Асм версия не применима для платформы arm-wince.
5. Асм версия не используется в FPC.
6. Асм версия почти не используетя для UNICODE.
Поэтому я предлагаю Владимиру Кладову принять волевое решение и отказаться от ASM версии, начиная с какой-то версии KOL.
Если будет реальная необходимость в экономии нескольких дополнительных килобайт кода в какой-то программе, то всегда можно использовать последнюю версию KOL с поддержкой ASM версии для компиляции этой программы.
Sapersky (2007-09-19 18:10:00) [1]Я имею в виду, что ознакомившись с трудами предшественников, можно избежать создания моделей имеющих 2-3%-ное "преимущество".
FillChar там, кстати, тоже есть.
Впрочем, как хотите :)
Vladimir Kladov (2007-09-19 15:36:00) [2]Если бы я не тратил время на изобретение велосипедов, KOL'а бы не было.
Andrey_rus (2007-09-19 03:48:00) [3]>как это нету ? есть.
Пусть лучше, а так и будет, производители микропроцессоров затачивают камни под ASM - REP.
GMax (2007-09-19 00:09:00) [4]>> (Интересно почему нет быстрого FillChar, или считается что быстрее уже точно некуда).
как это нету ? есть.
Sapersky (2007-09-18 18:58:00) [5]... а Владимиру советую, чтобы он не тратил время на изобретение лишних велосипедов.
Sapersky (2007-09-18 18:43:00) [6]Я, честно говоря, тоже не использую. В основном из-за того, что FastCode не оптимизируется под мой заслуженный краснознамённый P3 :) (на нём стандартные функции часто быстрее).
Ещё варианты, почему может тормозить:
1) Непроизвольное смешивание MMX и floating-point кода (в FastCode используется и то, и другое). Если за командой EMMS, заканчивающей MMX-код, следует FP, получается задержка в сколько-то там десятков тактов. Хотя, возможно, на современных CPU это несущественно.
2) MMX/SSE вообще-то требуют выравнивания данных, не помню, как в FastCode решена это проблема. По идее, универсальные функции должны сами как-то изощряться, а может, оставлено на программиста.
exero (2007-09-18 18:11:00) [7]Что касается FastCode - тут впечатление у меня сложилось двоякое, вроде и есть небольшой прирост скорости, но иногда (так и не разобрался с чем это связано) программа работала медленне чем без них (обработка данных занимала секунды 2, хотя без замены около 0.7сек). Хотя возможно, тормозила только какая-то одна из функций. Поэтому из всей библиотеки FastCode пользуюсь только FastMove.
ANTPro (2007-09-18 18:06:00) [8]
> [39] Vladimir Kladov © (18.09.07 17:20)
> Для меня использовать svn это просто увеличивать траффик.
Через toonel.net(сжатие трафика через прокси) огромная экономия.
Sapersky (2007-09-18 17:59:00) [9]Да посмотрел fastmove именно так и работает. И правда на том же тесте даёт почти двойной прирост скорости.
Если fastmove <> FastCode, то посмотрите ещё и последний. Там долго и вполне успешно оптимизируют борландовскую RTL, кое-что вроде даже включено в BDS2006.
Хотя, ИМХО, если скорость программы зависит от функций вроде Move/FillChar - проблема скорее в алгоритме, чем в функциях.
exero (2007-09-18 17:36:00) [10]Великий расKOL... жаль.
Vladimir Kladov (2007-09-18 17:33:00) [11]Да посмотрел fastmove именно так и работает. И правда на том же тесте даёт почти двойной прирост скорости. Тогда не буду уже свой доделывать, раз такой хороший есть. (Интересно почему нет быстрого FillChar, или считается что быстрее уже точно некуда).
Vladimir Kladov (2007-09-18 17:20:00) [12]Для меня использовать svn это просто увеличивать траффик. Потому чтообычный способ выкладывания мне все равно придется поддержать.
Я не вижу смысла выбрасывать ассемблер для PC он нужен. Несколько Кбайт экономии кода, + быстрее работает, что в нем плохого.
WinCE пусть лучше будет отдельной веткой если уж такая великая разница, что весь паскаль-код меняется. Мне WinCE запускать не на чем, разве что на эмуляторах, а это мне неинтересно.
Yury Sidorov (2007-09-18 16:19:00) [13]Пока у меня желание что-то объединять отпало.
Со своей стороны я поотключаю асм версии измененных процедур и буду синхронизировать kol-ce с основной веткой. Так что все желающие могут пользовать kol-ce как объединенную ветку.
Опять же Владимир не желает пользовать svn, а мне без этого никак.
Поживем увидим...
homm (2007-09-18 16:09:00) [14]> [36] Yury Sidorov (18.09.07 16:06)
> На этой оптимистической ноте эту тему можно прикрыть.
Т.е. ты уже все решил? :)
Yury Sidorov (2007-09-18 16:06:00) [15]Galkov, не нужно здесь истерик.
Ассемблер я знаю. Как для х86, так и для arm. Просто я ценю свое время, даже не текущее, а будущее время, которое нужно будет тратить на поддержание асм кода. Для меня словосочетание "дальнейшая поддержка продукта" не пустой звук и я пытаюсь убрать грабли с дороги.
Всему свое применение. В том числе и ассемблеру...
На этой оптимистической ноте эту тему можно прикрыть.
Galkov (2007-09-18 14:01:00) [16]
> С такой же, с какой получают ненужный блокнот с виндой. Потому что всем не угодишь
Я не добавляю в свой продукт дополнительные "блокноты". Если Вы добавляете - это Ваши проблемы, и Ваших пользователей.
Предложение исключить ASM версию означает, что некто, кому религия не позволяет понимать происходящее (именно так я понимаю нежелание знать ASM) настаивает чтобы и я в свой продукт включал "блокнотики"
Именно так, и не иначе !!!
А Ваше ли это дело, господин предлагающий ???
Yury Sidorov (2007-09-18 13:13:00) [17]
> Если ты не в курсе, загляни в модуль KOL.pas, там много
> таким образом отключеных процедур.
Я об этом упоминал в одном из постов.
homm (2007-09-18 12:12:00) [18]> [32] Yury Sidorov (18.09.07 12:08)
> Что скажет Владимир если я отключу асм для измененных функций?
> [19] Vladimir Kladov © (17.09.07 20:42)
> А я буду добавлять новые вещи на ассемблере.
Если ты не в курсе, загляни в модуль KOL.pas, там много таким образом отключеных процедур.
Yury Sidorov (2007-09-18 12:08:00) [19]Конечно могу. Это в конце концов приведет к отсутствию асм версии для большинства функций. В итоге будет оптимальный вариант - асм версии только для критических к скорости функций. Практически весь TControl не является критическим к скорости...
Что скажет Владимир если я отключу асм для измененных функций?
homm (2007-09-18 11:50:00) [20]> [30] Yury Sidorov (18.09.07 11:39)
> Поэтому если включить асм версию для KOL-CE и скомпилить
> под Дельфи, то работать будет все не так или вообще не будет
> работать.
> Таким образом имеем разную функциональность в асм и пас
> версиях...
Блин, в тех функциях, в которых ты переделал PAS версию, ты можешь просто заменить
{$IFDEF ASM_VERSION}
………
($ELSEIF ASM_VERSION}
………
{$ENDIF ASM_VERSION}
на
{$IFDEF ASM_noVERSION}
………
($ELSEIF ASM_VERSION}
………
{$ENDIF ASM_VERSION}
Ивсе! И если «включить асм версию для KOL-CE и скомпилить под Дельфи» все будет работать точно так-же!!! Ну сколько одно и то-же то можно твердить!