<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">How did you come to that conclusion? In Swift 2.1 (I'm late to update), with optimizations on,&nbsp;this function:<br class=""><br class=""><blockquote type="cite" class="">func test() -&gt; Double {<br class=""><span class="Apple-tab-span" style="white-space:pre">        </span>return Double(arc4random())<br class="">}<br class=""></blockquote><br class="">compiles to this IR:<br class=""><br class=""><blockquote type="cite" class="">define hidden double @_TF4test4testFT_Sd() #0 {<br class="">entry:<br class="">&nbsp;%0 = tail call i32 @arc4random()<br class="">&nbsp;%1 = uitofp i32 %0 to double<br class="">&nbsp;ret double %1<br class="">}<br class=""></blockquote><br class="">which has no allocation at all.<br class=""><div class=""><div class="">
<br class="Apple-interchange-newline"><span style="color: rgb(0, 0, 0); font-family: 'Lucida Grande'; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;" class="">Félix</span>
</div>
<br class=""><div><blockquote type="cite" class=""><div class="">Le 28 mars 2016 à 07:05:48, Biala via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; a écrit :</div><br class="Apple-interchange-newline"><div class=""><div class=""><div style="background-color: rgb(255, 255, 255); font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;" class=""><div id="yui_3_16_0_ym18_1_1459171693679_6550" class="">After few days playing with the profiler I have noticed some shocking swift behaviour.</div><div id="yui_3_16_0_ym18_1_1459171693679_6550" class="">When casting basic types from one type to another, for example from Int to Double swift is actually creating and then deallocating something :( That leads to another performance problem - imagine many casts in loops.&nbsp;</div><div id="yui_3_16_0_ym18_1_1459171693679_6550" class=""><br class=""></div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class="">As a type strict language swift is forcing one to cast Int to Double to when you multiply double by Int variables for example but as the cast is so expensive what should developers do to get better performance for some bit of code. As a sound processing developer I see most of the real time sound processing moved to C++ code, but I don,t see the reason for that as it is most basic operations in loops. Swift needs to be faster to become serious language ...</div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class=""><br class=""></div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class="">After profiling here is what I see:</div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class=""><br class=""></div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class="">1. slow arrays - may be partly improved using UnsafeMuttablePointers</div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class=""><br class=""></div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class="">2. expensive cast - this is not possible to avoid at this point. I will suggest making the language not so type strict when there is no need (like adding int to double and so on)</div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class=""><br class=""></div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class=""><br class=""></div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class=""><br class=""></div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class="">array[i] = value&nbsp;</div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class="">Double(1)</div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class=""><br class=""></div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class="">These problems come from hidden function calls so please avoid adding more of them in future like the syntax Erica suggested for the if:</div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class=""><br class=""></div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class="">if v in (0...127)</div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class=""><br class=""></div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class="">I suppose that the range will be also created and then deallocated in background. &nbsp;</div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class=""><br class=""></div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class=""><br class=""></div><div id="yui_3_16_0_ym18_1_1459171693679_6550" dir="ltr" class=""><br class=""></div></div></div>_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></blockquote></div><br class=""></div></body></html>