Size: a a a

2020 February 04

AS

Alexey Shumkin in Delphi & Lazarus
Рус
Всем привет! Вопрос такой, что быстрее: объявить переменную в функции (например integer), или обнулить глобальную?
Опять экономишь на спичках?
Правильно - оптимизировать действительно узкие места... Ну, и не использовать глобальные переменные..
источник

AS

Alexey Shumkin in Delphi & Lazarus
Рус
Для достижения максимальной скорости
Максимальной скорости чего?
источник

Р

Рус in Delphi & Lazarus
Alexey Shumkin
Максимальной скорости чего?
Скорость расчётов
источник

RY

Roman Yankovsky in Delphi & Lazarus
А это реально последнее, что тебе осталось заоптимизировать?
источник

Р

Рус in Delphi & Lazarus
Roman Yankovsky
А это реально последнее, что тебе осталось заоптимизировать?
Да. Дальше только  OpenCL
источник

RY

Roman Yankovsky in Delphi & Lazarus
Рус
Да. Дальше только  OpenCL
Тогда надо гонять тесты и смотреть. Но чисто логически разницы нет. Потому что локальную переменную тоже придется обнулять
источник

Р

Рус in Delphi & Lazarus
Roman Yankovsky
Тогда надо гонять тесты и смотреть. Но чисто логически разницы нет. Потому что локальную переменную тоже придется обнулять
1)
function xxx();
var MAslow: integer;
begin
if блаблабла MAslow := 999;

2)
function xxx();
begin
MAslow := 0;
if блаблабла MAslow := 999;
источник

Р

Рус in Delphi & Lazarus
Ведь есть разница?
источник

AS

Alexey Shumkin in Delphi & Lazarus
Рус
Да. Дальше только  OpenCL
Дооо.... Не верю (с) Станиславский
источник

Р

Рус in Delphi & Lazarus
Alexey Shumkin
Дооо.... Не верю (с) Станиславский
не про то речь
источник

Р

Рус in Delphi & Lazarus
Ну или другими словами, что быстрее - выделение ячейки под переменную, или занести в ячейку значение?
источник

RY

Roman Yankovsky in Delphi & Lazarus
Рус
1)
function xxx();
var MAslow: integer;
begin
if блаблабла MAslow := 999;

2)
function xxx();
begin
MAslow := 0;
if блаблабла MAslow := 999;
Первое на три капли быстрее будет
источник

DB

Dmitry Belkevich in Delphi & Lazarus
кроме opencl есть еще simd/assembler и многопоточка. может дать прирост в разы, а не пара тактов процессора как в твоем случае
источник

DB

Dmitry Belkevich in Delphi & Lazarus
ну и если действительно сильно нужно, то можно и opencl/cuda поднять. там при хорошем стечении можно и стократное ускорение получить
источник

Р

Рус in Delphi & Lazarus
Roman Yankovsky
Первое на три капли быстрее будет
Можно на пальцах, почему?
источник

DB

Dmitry Belkevich in Delphi & Lazarus
опять же - можно посмотреть на заполненность кэшей процессора. я как-то поменяв алгоритм с доступа к разным частям массива на последовательный доступ подряд ускорил примерно на 30 процентов расчет
источник

AS

Alexey Shumkin in Delphi & Lazarus
Рус
Ну или другими словами, что быстрее - выделение ячейки под переменную, или занести в ячейку значение?
Мне кажется, если ты копаешь настолько глубоко оптимизации, то тебе сто́ит поучить ассемблер и смотреть уже код самому, а не спрашивать в чатике 😁 (не умаляю заслуг и знаний коллег...)
источник

Р

Рус in Delphi & Lazarus
Alexey Shumkin
Мне кажется, если ты копаешь настолько глубоко оптимизации, то тебе сто́ит поучить ассемблер и смотреть уже код самому, а не спрашивать в чатике 😁 (не умаляю заслуг и знаний коллег...)
Так вопрос то не сложный. Или мне только так кажется?
источник

RY

Roman Yankovsky in Delphi & Lazarus
Рус
Можно на пальцах, почему?
Потому что в первом случае у тебя есть операция присваивания нуля глобальной переменной. А во втором случае никаких операций нет. Даже выделение памяти под переменную скорее всего пройдет в рамках общего выделения стека.
источник

DM

Dmitry Mozulyov in Delphi & Lazarus
источник