Найдено 4 результата

stopkin
06.06.2006 16:53:54
Форум: Потрепаться
Тема: процедура быстрее функции.. почему?
Ответы: 24
Просмотры: 39874

Есть подозрение, что компилятор Delphi одну и ту же функцию может вызвать из разных местах по разному: может с промежуточной результирующей переменной, а может и напрямую.
stopkin
06.06.2006 16:32:59
Форум: Потрепаться
Тема: процедура быстрее функции.. почему?
Ответы: 24
Просмотры: 39874

Mirage
А в чем тогда "сложность" заключается? Вроде и там, и там - record, но при Transform4Vector4s result - это временная переменная, а в simd_vecs3_sub_1 - нет? Почему компилятор Delphi по-разному делает с одними и теми же типами?
stopkin
06.06.2006 08:43:23
Форум: Потрепаться
Тема: процедура быстрее функции.. почему?
Ответы: 24
Просмотры: 39874

Delphi 6, если функция возвращает record или object, то вызов такой функции выглядит как вызов процедуры с var параметром, в который передали результирующую переменную. А во FreePascal в стеке отводится промежуточная переменная, передается как var, а потом побайтное копирование результата.
stopkin
06.06.2006 00:58:27
Форум: Потрепаться
Тема: процедура быстрее функции.. почему?
Ответы: 24
Просмотры: 39874

В Delphi почему-то был принят вариант без копирования результата, и там что function, что procedure - оба варианта были идентичны (что очень радовало). А про вызовы (V,M,V) просто запомнить, что так делать не надо, и никаких трудностей тут нет. (V,M,V2)