What's the frequency of the letter "а" in:
Q: Разница в производительности function и procedure Чем отличается
function some(i:integer):integer;
 begin
   some:=i;
 end;

от
procedure some(i:integer;var j:integer);
 begin
   j:=i;
 end;

Предположительно, ничем.
Может, кто-то уже делал тесты, или просто знает?
A: _FSOME$$INTEGER:
      push  ebp
      mov   ebp, esp
      sub   esp, 4
      mov   eax, dword [ebp + 8]
      mov   dword [ebp - 4], eax
L1:
      mov   eax, dword [ebp - 4]
      mov   esp, ebp
      pop   ebp
      ret   4

_PSOME$$INTEGER$INTEGER:
      push  ebp
      mov   ebp, esp
      mov   eax, dword [ebp + 12]
      mov   edx, dword [ebp + 8]
      mov   dword [eax], edx
L2:
      mov   esp, ebp
      pop   ebp
      ret   8

_main:
      mov   dword [_A], 5
      push  dword [_A]
      call  _FSOME$$INTEGER
      mov   dword [_B], eax
      push  offset [_B]
      push  dword [_A]
      call  _PSOME$$INTEGER$INTEGER
      call      exit

Если посчитаете количество команд то увидите что при использовании функции выполняется на 2 команды больше, чем в процедурном варианте. Уверен что на других компиляторах, с различными настройками оптимизации можно увидеть совсем другой результат.
А по делу используйте функции когда вам надо вернуть одно значение, а вариант с процедурой когда нужно вернуть несколько значений.
A: Разница запросто может быть. Вообще, всё зависит от компилятора. 
В общем случае первый вариант должен работать быстрее на основных процессорах, так как число на выходе из функции передаётся через регистр в виде значения. Во втором случае, вы имеете указатель на место в памяти, куда надо записать результат. В втором случае у вас чтение параметра из стека (указатель j) и запись по этому адресу значения. В первом случае значение кладётся в eax/rax и функция заканчивается. 
Однако, есть вероятность, что компилятор "просечёт" ситуацию и во втором случае тоже попытается схитрить. Но это не обязательно произойдёт. К тому же, в общем случае это не всегда возможно.
A: 
Если посчитаете количество команд то
увидите что при использовании функции
выполняется на 2 команды больше, чем в
процедурном варианте.

Одинаковые инструкции в разной последовательности исполняются за разное время. Уже давно процессоры используют очереди команд(конвеер), предсказание ветвлений и пр. На этой конструкции:
mov   eax, dword [ebp + 8]
mov dword [ebp - 4], eax
Процессор будет простаивать. Вобщем отвратительный генерируемый код.
user
There are one hundred "а"s in the text you provided.
assistant