<div dir="ltr">@Kate,<div><br></div><div>I don&#39;t seem to be able to get `malloc_...` to work. EG:</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">class TestClass {<br>    let a = 0<br>    let b: Int? = nil<br>}<br>@_silgen_name(&quot;swift_class_getInstanceExtents&quot;) func swift_class_getInstanceExtents(theClass: AnyClass) -&gt; (negative: UInt, positive: UInt)<br>print(&quot;swift_class_getInstanceExtents = \(swift_class_getInstanceExtents(TestClass))&quot;)<br>let requiredSize = malloc_size(unsafeAddressOf(TestClass()))<br>print(&quot;malloc_size = \(requiredSize)&quot;)<br>print(&quot;malloc_good_size = \(malloc_good_size(requiredSize))&quot;)<br></blockquote><br>Prints:<div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">swift_class_getInstanceExtents = (0, 33)<br>malloc_size = 0<br>malloc_good_size = 16<br></blockquote><br><div>The `swift_class_getInstanceExtents` seems correct to me: 16 bytes for class overhead + 16 bytes for `a` and `b` + 1 byte because `b` is an optional = 33 bytes.</div><div><br></div><div>Not sure what `malloc_...` is giving?</div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature">  -- Howard.<br></div></div>
<br><div class="gmail_quote">On 24 March 2016 at 10:39, Kate Stone <span dir="ltr">&lt;<a href="mailto:k8stone@apple.com" target="_blank">k8stone@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">I definitely concur that tools like Instruments are the best way to understand the impact of decisions on memory across the board.  For fine-grained inquiries about memory use you can also rely on malloc family functions to make inquiries:<div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>let required_size = malloc_size(unsafeAddressOf(<i>object_reference</i>))</div><div>let actual_size = malloc_good_size(required_size)</div></blockquote><div><br><div>
<div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="font-family:LucidaGrande;word-wrap:break-word"><div style="word-wrap:break-word"><font color="#424242" style="font-family:&#39;Lucida Grande&#39;;font-size:x-small">Kate Stone</font><span style="font-family:&#39;Lucida Grande&#39;;font-size:x-small"> </span><font color="#009193" style="font-family:&#39;Lucida Grande&#39;;font-size:x-small"><a href="mailto:k8stone@apple.com" target="_blank">k8stone@apple.com</a></font></div><div style="font-family:Times;word-wrap:break-word"><font face="Lucida Grande" size="1"><font color="#009193"></font> Xcode <font color="#424242">Low Level Tools</font></font></div></div></div></div></div></div>
</div>
<br><div><blockquote type="cite"><div><div class="h5"><div>On Mar 23, 2016, at 3:59 PM, Howard Lovatt via swift-users &lt;<a href="mailto:swift-users@swift.org" target="_blank">swift-users@swift.org</a>&gt; wrote:</div><br></div></div><div><div><div class="h5"><div dir="ltr">Thanks, I will give that a try</div><div class="gmail_extra"><br clear="all"><div><div>  -- Howard.<br></div></div>
<br><div class="gmail_quote">On 24 March 2016 at 03:17, Jens Alfke <span dir="ltr">&lt;<a href="mailto:jens@mooseyard.com" target="_blank">jens@mooseyard.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><blockquote type="cite"><div>On Mar 22, 2016, at 11:04 PM, Howard Lovatt via swift-users &lt;<a href="mailto:swift-users@swift.org" target="_blank">swift-users@swift.org</a>&gt; wrote:</div><br><div><div dir="ltr" style="font-family:Alegreya-Regular;font-size:15px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">I am writing custom collection classes and trying to assess which one is better, both in terms of performance and memory usage. Won&#39;t be used in &#39;real&#39; code, just to guide development.</div></div></blockquote></div><br><div>You might consider using heap profiling tools too, like (on Mac OS) the Instruments app or the `heap` command-line tool. If you use these while running a benchmark app using your API, it can show you how much total heap space gets used.</div><div><br></div><div>Actual heap usage can differ from the raw “sizeof” a data type, since allocators will often round up block sizes or return a somewhat larger block than necessary. Heap fragmentation can also increase memory usage beyond what you’d expect, and different allocation patterns can affect fragmentation.</div><span><font color="#888888"><div><br></div><div>—Jens</div></font></span></div></blockquote></div><br></div></div></div>
_______________________________________________<br>swift-users mailing list<br><a href="mailto:swift-users@swift.org" target="_blank">swift-users@swift.org</a><br><a href="https://lists.swift.org/mailman/listinfo/swift-users" target="_blank">https://lists.swift.org/mailman/listinfo/swift-users</a><br></div></blockquote></div><br></div></div></blockquote></div><br></div>