Войти
ПрограммированиеФорумОбщее

Delphi 2009 - Оптимизация вашего приложения. (2 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
#15
22:12, 24 июня 2009

Это пока к нам не придет кто-то, кто знает ассемблер :)))


#16
23:12, 24 июня 2009

Fast code: by Reev and Sergio666 ;-)

function StrToInt( text: pchar): int;
var
curr, ext: int;
negative : bool;
begin
// Extent
ext:= 1;
// def value
result:= 0;
// check negative value"?
negative:=text[0] = #45{'-'};
// if negative -> del negative mark
inc( text, ord( negative ) );
// get last enum char
curr:=pred ( Lenght(text) );
// loop
while curr >= 0 do begin
// inc (convert value-text to ordinal type)
 inc(result, ( byte(text[curr]) - 48 ) * ext );
// ext
 ext:=ext * 10;
// next char
 dec(curr);
 end;
 if negative then result:=-result;
end;

#17
23:19, 24 июня 2009

А если строка будет '+10', загнётся же функция? А не должна...

#18
23:23, 24 июня 2009

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

#19
23:26, 24 июня 2009

pool2004
Парсинг например...
Например пропарсить obj или dae (коллада), когда данных много, файлики очень толстые и много времени тратится на парсинг...

#20
23:35, 24 июня 2009

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

#21
23:38, 24 июня 2009

Executor
сделаю проверку на [0...9] =)
pool2004
Ну так это только первая функция+), сейчас взялся за Pos() посмотрим что выйдет.

#22
23:56, 24 июня 2009

1) В нормальном приложении написанном на Delphi, строки хранятся в Unicode (ну вот не могу я всё в AnsiString'ах хранить...). Следовательно для вызова этой функции придётся прибегнуть к дорогому конвертированию в PAnsiChar (которую ты переопределил в pchar)
2) Нет возможности задания Default значения в случае фигни в строке
3) Не разбирает ---, ++, +-+- и т.п. весёлую и никому не нужную белибердистику )

#23
23:57, 24 июня 2009

Open svn: http://code.google.com/p/iray/source/browse/test_lab/new_utils.pas

#24
0:03, 25 июня 2009

Написание таких функций очень даже полезно для развития мозга :)

#25
0:03, 25 июня 2009

4) Не конвертирует из Hex представления StrToInt('$101010FF')

#26
0:05, 25 июня 2009

Но для конкретных целей очень даже полезная вещь

#27
0:24, 25 июня 2009

5) Не воспринимает математические выражения.

#28
0:29, 25 июня 2009

X512
Стандартный разве воспринимает?

#29
6:12, 25 июня 2009

а проверять то на валидность данные кто будет?

Страницы: 1 2 3 4 5 6 7 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.