![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
С процедурами - лучше? [D7, XP]
AlexanderMS © (2006-05-16 19:06:00)Даёт ли какое-нибудь преимущество использование
s := concat(s, c)вместо s := s + с;
inc(c, 2)вместо c := с + 2?
В каких случаях код будет оптимальнее?
Gydvin (2006-05-17 12:33:00) [1]
> Плохиш © (17.05.06 12:20) [11]
а что сделать, молодой не опытный. ))
Gydvin (2006-05-17 12:30:00) [2]отключил
1 ~ 2035
2 ~ 2062
диагноз: они ~ одинаковы
Плохиш (2006-05-17 12:20:00) [3]
> Gydvin © (17.05.06 11:54) [9]
> каждый раз, разные результаты
Я плякал, а посмотреть в окно CPU не догадались? Д7 транслирует оба примера в одинаковый код, что с оптимизацией, что без оной ;-)
Ega23 (2006-05-17 11:58:00) [4]
> Gydvin © (17.05.06 11:54) [9]
Оптимизация выключена?
Gydvin (2006-05-17 11:54:00) [5]каждый раз, разные результаты
по первому дает
от 671 до 735 чаще всего 688
по второму
от 671 до 781 чаще всего 703-719
Ega23 (2006-05-17 11:40:00) [6]
var
i, ticks, j : Integer;
begin
j:=0;
ticks:=GetTickCount;
for i:=1 to 1000000000 do j:=Inc(j);;
ticks:=GetTickCount-ticks;
Label1.Caption:='Ticks - '+IntToStr(ticks)+'; j='+IntToStr(j);
var
i, ticks, j : Integer;
begin
j:=0;
ticks:=GetTickCount;
for i:=1 to 1000000000 do j:=j+1;;
ticks:=GetTickCount-ticks;
Label1.Caption:='Ticks - '+IntToStr(ticks)+'; j='+IntToStr(j);
Первый вариант - 2609 мс, второй - 2594. Итого: + быстрее.
Gydvin (2006-05-17 11:39:00) [7]
> Amoeba © (17.05.06 11:29) [5]
а что это :))))
Ega23 (2006-05-17 11:34:00) [8]
> кто-то здесь говорил, что inc лучше и обосновывал как-то
Конечно лучше. Если это asm.
Amoeba (2006-05-17 11:29:00) [9]
> Gydvin © (16.05.06 20:43) [3]
> кто-то здесь говорил, что inc лучше и обосновывал как-то
Об этом говорится даже в документации по Паскалю
Loginov Dmitry (2006-05-16 20:45:00) [10]AlexanderMS © (16.05.06 19:06)
Даёт ли какое-нибудь преимущество использование
s := concat(s, c) вместо s := s + с;
Delphi syntax:
function Concat(s1 [, s2,..., sn]: string): string;
Description
In Delphi code, use Concat to concatenate an arbitrary number of strings. Each parameter is a string-type expression. The result is the concatenation of all the string parameters.
Using the plus (+) operator has the same effect on two strings as using the Concat function:
S := 'ABC' + 'DEF';
Tip: The plus operator is faster than Concat.
Gydvin (2006-05-16 20:43:00) [11]кто-то здесь говорил, что inc лучше и обосновывал как-то
_duk (2006-05-16 20:38:00) [12]inc(c, 2) использовать лучшее. на всех олимпиадах шарящие люди используют именно этот метод
TUser (2006-05-16 20:21:00) [13]См. CPU window
Зы. Реального преимущества не дает.