2015-10-27 20 views
7

Pytanie jest więc dość proste, co dokładnie oznacza wstawianie i kiedy powinno być używane w eliksiru?Kiedy wstawić funkcję w eliksiru

Przez inline Znaczy to: @compile {:inline, myfun: 1}

PS: Wiem, że istnieją informacje na ten temat w dokumentacji Erlanga here, ale nadal nie jestem pewien, czy rozumiem.

Odpowiedz

13

Po wstawieniu funkcji jej wywołania zostaną zastąpione samą treścią funkcji podczas kompilacji. Może to być użyte do wyciśnięcia ostatniej części wydajności z określonego wywołania funkcji, eliminując narzut na jedno wywołanie funkcji. Niestety, utrudni to również odczytanie stosu, ponieważ oryginalna funkcja faktycznie nie istnieje w skompilowanym kodzie. Więc kiedy używasz inline, powinieneś być pewnie przekonany, że funkcja inline jest odporna na kule, w przeciwnym razie twój kod będzie trudniejszy do debugowania.

Naprawdę nie zawracałbym sobie głowy pozycjonowaniem, chyba że masz prostą funkcję o nazwie przez cały czas. Take a look at the Elixir source code to get a feeling w których przypadkach używany jest inlineing - znajdziesz podstawowe funkcje, które działają na listach, mapach itp. I prawdopodobnie będą się nazywać bardzo często. Zauważ, że nawet wewnątrz kodu źródłowego Elixir inlinowanie jest używane bardzo oszczędnie, ponieważ będziesz czerpać z niego korzyści tylko w rzadkich przypadkach.