मैं कोई कंपाइलर अनुकूलन विशेषज्ञ नहीं हूं। मुझे यह भी यकीन नहीं है कि संकलक या अनुकूलन तक अपेक्षाकृत "उचित" क्या है। मैं सिर्फ उत्सुक हूं और सवाल पूछ रहा हूं।एरलांग कंपाइलर अनुकूलन
% TOY EXAMPLE 1
test(X) ->
if
X-1 > 0 ->
yes;
X-1 == 0 ->
maybe;
true -> no
end.
तो मैं तो आदेश घटाना दो बार ऐसा करने के लिए नहीं में यह अनुकूलित:
किसी भी दर पर, मैं कुछ Erlang एक बुनियादी रूप में इस जैसे कोडिंग था
% TOY EXAMPLE 2
test(X) ->
Z = X-1,
if
Z > 0 ->
yes;
Z == 0 ->
maybe;
true -> no
end.
तब मैंने सोचा "समय की बर्बादी - निश्चित रूप से संकलक दूसरे उदाहरण में पहले उदाहरण को अनुकूलित करता है।" इसलिए मैंने संकलन चलाकर जांचने का निर्णय लिया: दोनों के लिए 'एस' विकल्प के साथ फ़ाइल। यहां आउटपुट है:
% TOY EXAMPLE 1
{function, test, 1, 15}.
{label,14}.
{func_info,{atom,exchange},{atom,test},1}.
{label,15}.
{gc_bif,'-',{f,16},1,[{x,0},{integer,1}],{x,1}}.
{test,is_lt,{f,16},[{integer,0},{x,1}]}.
{move,{atom,yes},{x,0}}.
return.
{label,16}.
{gc_bif,'-',{f,17},1,[{x,0},{integer,1}],{x,1}}.
{test,is_eq,{f,17},[{x,1},{integer,0}]}.
{move,{atom,maybe},{x,0}}.
return.
{label,17}.
{move,{atom,no},{x,0}}.
return.
% TOY EXAMPLE 2
{function, test, 1, 15}.
{label,14}.
{func_info,{atom,exchange},{atom,test},1}.
{label,15}.
{gc_bif,'-',{f,0},1,[{x,0},{integer,1}],{x,0}}.
{test,is_lt,{f,16},[{integer,0},{x,0}]}.
{move,{atom,yes},{x,0}}.
return.
{label,16}.
{test,is_eq,{f,17},[{x,0},{integer,0}]}.
{move,{atom,maybe},{x,0}}.
return.
{label,17}.
{move,{atom,no},{x,0}}.
return.
वे समान नहीं हैं। अगर मैं यह सही पढ़ रहा हूं (शायद मैं नहीं हूं), अनुकूलन नहीं किया जाता है।
मैं कुछ संभावनाएं देख सकते हैं:
अनुकूलन किया जा सकता है, मैं सिर्फ क्योंकि मैं संकलित करने के लिए गलत समारोह का उपयोग कर रहा है, या सही झंडे का इस्तेमाल नहीं कर अनुकूलन सक्षम करने नहीं कर रहा हूँ, आदि
अनुकूलन अभी नहीं किया गया है।
अन्य।
कौन सा है?
नोट: अगर आप केस स्टेटमेंट का उपयोग करते हैं तो आप इस तरह के और ऐसा कर सकते हैं या "आप ब्लैह-ब्लाह करके इसे टाल सकते हैं।" बिंदु यह जांचने के लिए है कि एरलांग कंपाइलर कौन सा अनुकूलन करता है या नहीं करता है, और क्यों या क्यों नहीं।
धन्यवाद।
"सामान्य उप-संपीड़न उन्मूलन" - इसे मिला। मुझे पता था कि मैंने उस शब्द को कहीं पहले सुना है। मुझे लगता है कि मैं बस अधिकतर सामानों को अनुकूलित करने के लिए हाथ रखूंगा और रिकॉलन से निपटने वाली कुछ चीजों को अनुकूलित करने और क्या नहीं करने के लिए erlang को चलेगा। –