СИ
Size: a a a
СИ
SL
СИ
SL
СИ
DR
test([A, B, C] = List) ->
test(List, List).
test(OrigList, CurrentList) ->
case ... of
... ->
ToAdd = lists:filter(fun (Elem) ->
lists:member(Elem, OrigList)
end, CurrentList)
test(OrigList, CurrentList ++ ToAdd)
end
DR
VS
nconc
, так что будут два разных спискаDR
nconc
, так что будут два разных спискаDR
A = B % где B 3 мегабайта данных, то
A == B % пойдёт вглубь или поймёт по поинтеру, что они идентичны?
SP
V
DR
V
VS
SP
SP
==
сравнения используется инструкция is_eq
https://github.com/erlang/otp/blob/8c2badd69e163f7b4261dce242344f7f7af213b3/erts/emulator/beam/instrs.tab#L1009-L1013 но есть оптипизированные версии если кто-то из операндов литералYZ
SP
==
сравнения используется инструкция is_eq
https://github.com/erlang/otp/blob/8c2badd69e163f7b4261dce242344f7f7af213b3/erts/emulator/beam/instrs.tab#L1009-L1013 но есть оптипизированные версии если кто-то из операндов литерал#define CMP_EQ_ACTION(X,Y,Action) \
if ((X) != (Y)) { CMP_SPEC((X),(Y),!=,Action,1); }
SP
erlang:'=='/2
которая вызывает erts_cmp
: https://github.com/erlang/otp/blob/a77d3c7a14fc18b44e6732d1e849deb9e3bbb048/erts/emulator/beam/erl_utils.h#L189