Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
ВнизДля чего и как пользоваться оператором Inline Найти похожие ветки
← →
DelphiLexx © (2004-10-04 15:37) [0]В С++ я часто встречаю использования Inline в функциях, которые должны
быстро работать.
Вопрос: Как пользоваться данным оператором в Delphi. В help"e про него
очень мало инфы.
← →
Семен Сорокин © (2004-10-04 15:44) [1]{$I FileName}
FileName - имя файла.
← →
KSergey © (2004-10-04 15:45) [2]А разве в дельфи такой есть??? Или я пропустил что-то?
← →
KSergey © (2004-10-04 15:46) [3]To [1] Семен Сорокин © (04.10.04 15:44)
Inline это не #include ;)
← →
Суслик © (2004-10-04 15:46) [4]
> [1] Семен Сорокин © (04.10.04 15:44)
ты include и inline перепутал
← →
Семен Сорокин © (2004-10-04 15:47) [5]:)) уже понял
← →
Anton_K © (2004-10-04 15:49) [6]Inline нужен для вставки Ассемблерного кода.
← →
суслик © (2004-10-04 15:49) [7]
> В help"e про него
> очень мало инфы.
так мало, что ее просто нет :)))
ЗЫ. Может времена изменились, и это есть? :))))
← →
Erik1 © (2004-10-04 15:51) [8]Но можно с соблюдением определеных провил include как inline использовать.
← →
Суслик © (2004-10-04 15:51) [9]а-а-а.
понял про что это.
inline в сях и inline в дельфи - разные вещи
Аналога сишного inline в дельфи нет.
← →
Семен Сорокин © (2004-10-04 15:54) [10]offtop
2Суслик
а почему у тебя ник то с большой буквы, то с маленькой, это один из способов самовоспитания :)
зы. Без обид.
← →
Sergey_Masloff (2004-10-04 15:55) [11]Суслик © (04.10.04 15:51) [9]
>Аналога сишного inline в дельфи нет.
а копипаст? Это ж просто вставка кода процедуры во все места где она должна вызываться? ;-)
← →
СУСЛИК © (2004-10-04 16:01) [12]
> [10] Семен Сорокин © (04.10.04 15:54)
> offtop
Все дело в том, что я в клиенте от nikkie не знаю как сделать так, чтобы ник каждый раз не набирать - вот и набираю каждый раз.
← →
}|{yk © (2004-10-04 16:08) [13]Да помнится проверял когда-то разницу в скорости между inline и не inline функциями, оказалось почти никакой. Компилятор сам решает, делать ли функцию inline, и кажется inline вообще собирались делать в стандарте "устаревшей"
← →
KSergey © (2004-10-04 16:10) [14]> [13] }|{yk © (04.10.04 16:08)
> Да помнится проверял когда-то разницу в скорости между inline
> и не inline функциями, оказалось почти никакой.
Это от методики тестирования зависит. И от понимания что это есть ;)
← →
Sandman25 © (2004-10-04 16:30) [15][12] СУСЛИК © (04.10.04 16:01)
Подредактируйте Answer.htm
← →
Суслик © (2004-10-04 16:39) [16]
> Подредактируйте Answer.htm
спасибо :)))
← →
Piter © (2004-10-04 17:32) [17]DelphiLexx © (04.10.04 15:37)
В С++ я часто встречаю использования Inline в функциях, которые должны
быстро работать
типа есть функции, которые должны работать медленно? :)
Суслик © (04.10.04 16:39) [16]
можешь еще Magic Forum попробовать :)
← →
Суслик © (2004-10-04 17:49) [18]
> типа есть функции, которые должны работать медленно? :)
есть, где это не важно в разумных пределах.
таких функций большинство.
> можешь еще Magic Forum попробовать :)
у тебя он работает чере isa сервер с аутентификацией nmlt?
← →
Defunct © (2004-10-04 17:53) [19]> Аналога сишного inline в дельфи нет.
был в Паскале
В Delphi убрали за ненадобностью
Inline код можно разместить так:
asm
db <баты кода через пробел>
end;
← →
Sandman25 © (2004-10-04 17:57) [20][19] Defunct © (04.10.04 17:53)
И так 20 раз :(
← →
Суслик © (2004-10-04 17:57) [21]
> [19] Defunct © (04.10.04 17:53)
да не тот это inline :)
автор про другое спрашивал.
такого ни в паскале ни в дельфе не было
← →
Суслик © (2004-10-04 17:58) [22]
> [20] Sandman25 © (04.10.04 17:57)
> И так 20 раз :(
надо же знакомое слово прокомментировать :)))
← →
Sandman25 © (2004-10-04 18:03) [23][22] Суслик © (04.10.04 17:58)
Можно же вместо
x := Min(A,B);
...
y := Min(C,D);
сразу писать ассемблерный код по расчету минимума, то есть будет некий аналог inline. Но писать даже 2-3 строчки 20 раз утомительно и в корне неверно.
← →
Defunct © (2004-10-04 18:09) [24]> да не тот это inline :)
Именно тот
Из справки BP:
inline (reserved word)
Inline statements and directives allow you to
insert machine code instructions directly into
the code of a program or unit.
Syntax:
inline ( data / data / ... data )
Remarks:
When used as a statement, the inline data
elements are inserted directly in the code.
When used as a directive in a procedure or a
function declaration, the inline data elements
are inserted in the code each time the
procedure or function is called.
An inline data element consists of a constant
or variable identifier, optionally prefixed by
a size specifier, < or >.
A variable identifier can be followed by +
(plus) or - (minus) and a constant to specify
an offset from the variable"s address.
An inline element generates 1 byte of code if
it is a constant within the range 0 and 255;
otherwise, it generates one word.
You use the < and > operators to override the
automatic size selection:
< means always generate a byte
> means always generate a word.
Example:
(* "inline" statement *)
procedure FillWord(var Dest; Count: Word; Data: Word);
begin
inline(
$C4/$7E/<Dest/ (* LES DI,Dest[BP] *)
$8B/$4E/<Count/ (* MOV CX,Count[BP]*)
$8B/$46/<Data/ (* MOV AX,Data[BP] *)
$FC/ (* CLD *)
$F3/$AB); (* REP STOSW *)
end;
See Also:
built-in assembler
← →
Суслик © (2004-10-04 18:11) [25]
> [24] Defunct © (04.10.04 18:09)
вот, когда я от тебя увижу описание inline из с++, тогда и будем сравнивать, то это о чем спрашивал автор или нет :))))
← →
Defunct © (2004-10-04 18:24) [26]Один из inline из справки BC:
inline (keyword)
Declares/defines C++ inline functions
Syntax:
<datatype> <function>(<parameters>) { <statements>; }
inline <datatype> <class>::<function> (<parameters>) { <statements>; }
In C++, you can both declare and define a member function within its class.
Such functions are called inline.
PS: В справке по C++ есть аж 3 разных Inline, так что поди разбери о чем спрашивалось в вопросе.
> В С++ я часто встречаю использования Inline в функциях, которые должны
На скорость повлиять может только inline [24].
← →
GuAV © (2004-10-04 19:51) [27]
> На скорость повлиять может только inline [24].
А eго можно заменить asm...end в котором DB :-)
← →
Amoeba © (2004-10-05 11:49) [28]А это из справки по Delphi:
The built-in assembler is accessed through asm statements, which have the form
asm statementList end
where statementList is a sequence of assembler statements separated by semicolons, end-of-line characters, or Object Pascal comments.
Comments in an asm statement must be in Object Pascal style. A semicolon does not indicate that the rest of the line is a comment.
The reserved word inline and the directive assembler are maintained for backward compatibility only. They have no effect on the compiler.
← →
Суслик © (2004-10-05 12:19) [29]
> [28] Amoeba © (05.10.04 11:49)
и так двадцать раз подряд, пока не станет понятно, что к inline в паскале и дельфи вопрос отношения не имеет. :)))
← →
KSergey © (2004-10-05 12:48) [30]Так, друзья. Простите за тон, но
Давайте вначале все, кто не знает что значит inline в C++ таки узнает, а потом будет говорить про ассемблерные вставки и прочую глупость. Вернее - уже не будет ;)
← →
Суслик © (2004-10-05 12:52) [31]Маленькая лекция.
Inline в сях около функции инструктирует компилятор, что тело функции надо встраивать в каждое место вызова функции. Это позволяет избежать потерь времени на вызове функции. Компилятор не обязан делать встраивание, когда это не возможно (большие фукции, сложные функции, рекурсия и пр.), но старается учеть пожелания программиста.
Ничего подобного в дельфи нет.
← →
Warlock © (2004-10-05 13:33) [32]Суслик © (05.10.04 12:52) [31]
И слава богу. Да здравствует ООП!
← →
Суслик © (2004-10-05 14:18) [33]
> И слава богу. Да здравствует ООП!
иногда нужно :)
особенно если некая функци вызывается несколько млн раз. Если это место критично по времени, то экономия всегда приятна. Не находишь?
Могу привести пример того, когда это нужно.
У меня приятель работал в самом известном отеч. поисковом сервере. Движок у них был на ++. Сервак распределенный, 40 машин по $6000 каждая. Втала задача убрать две машины. По тестам этого делать было нельзя. 2 дня работы с установкой inline около некоторых функций позволили убрать целих 3 машины при сохранении производительности. 18 штук - неплохо, а?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.034 c