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

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

Страницы: 1 2 3 4 5 6 7 Следующая »
#30
9:30, 25 июня 2009

1) Переписать для WideString не составить труда.
2) Сделаю.
3) Я думаю это не нужно.
4) Сделаю.
5) Зачем они тебе? - для этого лучше сделать отдельную функцию.

doc.
Ну так будет проверка ['0'...'9'] =)


#31
9:57, 25 июня 2009

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

Так он и будет один раз... Ты с сотню файлов сконверти... :) Я не хочу ставить на ночь конвертацию например...

#32
14:26, 25 июня 2009

pos:
Pos Text test:the difference between right and moralyu.
Find : between
std::Pos:7547
speed::PosText:1203
===============
test: speedUp:x6,27
===============

Прирост от 5-15х в разных текстах.

#33
14:48, 25 июня 2009

вот сам тест:app Pos speedup

#34
15:26, 25 июня 2009

project_manager
pchar - это с 0 в конце?

если да то непонятно нафига два раза бегать по строке?

curr:=pred ( Lenght(text) ); // раз
// loop
while curr >= 0 do begin   // два
...

#35
16:16, 25 июня 2009

1) Узнаем длину строки.
2) Идем с конца строки и умножаем на стенень.
Все понятно?

#36
16:36, 25 июня 2009

посмотрел код утилиты и обнаружил интересную для себя новость, в делфи оказывается с 2005й версии inline функции появились, я тут с седьмой дельфи и ничего про оптимизацию и не знаю. Если не секрет на сегодняшний день в последней 2009й дельфи из подобных интересных возможностей для оптимизации что еще появилось со времен седьмой делфи?

#37
17:55, 25 июня 2009

ReeV
> Узнаем длину строки
пробегаем от начала до конца строки

>Идем с конца строки и умножаем на стенень.
делаем еще раз ту же дурную работу

#38
18:00, 25 июня 2009

doc.
Ну так покажи как можно оптимизировать вот код:

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 ( LengthText(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;
#39
18:07, 25 июня 2009

>делаем еще раз ту же дурную работу

Плюс переменные ext и curr - не нужны :)
Так же становится ненужной проверка на нул, которой тут нет.

#40
18:15, 25 июня 2009

entryway
doc.
Ну так, давайте, напишите=)) я бы с радостью посмотрел на более элегантное решение этой задачи.

#41
18:24, 25 июня 2009

result = (result * 10) + *p++ - '0';

#42
18:29, 25 июня 2009

entryway
Delphi?

#43
18:32, 25 июня 2009

>Delphi?
Нет. Си.

#44
18:44, 25 июня 2009

entryway
смысле как?
вот что получилось + 30%

function StrToInt_New( S: pchar): int;
begin
result:= 0;
// for
while s[0] <> #0 do
 begin
 result := (result * 10) + ubyte(s[0]) - 48;
 inc( s );
 end;
end;
Страницы: 1 2 3 4 5 6 7 Следующая »
ПрограммированиеФорумОбщее

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