Разница будет в выделяемой памяти и размещении бинарника.
Для вашего примера Bin1 И Bin2 это heapbinary, то есть бинарники в памяти процесса.
А Bin = <<Bin1/binary, Bin2/binary>> уже создаст refc binary. То есть бинарник в binary heap, не в памяти процесса, и размер выделяемой памяти будет не меньше 256 байт.
Такая вот оптимизация, на тот случай если позже вы решите например добавить туда что то еще.
Типа BinA = <<Bin/binary, 1>>.
А list_to_binary это bif, который создаст (для вашего примера) бинарник точно по размеру iolist, и разместит его в памяти процесса. То есть heapbinary.
На мой взгляд в практическом смысле не стоит заморачиваться list_to_binary. Ну за исключением специфического случая, когда бинарники маленькие, процессы короткоживущие, памяти мало, а таких операций много.
среда, 21 июня 2017 г., 12:57:45 UTC+3 пользователь Taras J. Honcharuk написал: