
On Performant Arrays in Swift - jordansmithnz
http://jordansmith.io/on-performant-arrays-in-swift/
======
waynecochran
Optimization makes a _huge_ difference with arrays in Swift. The following
took 2.37 seconds (!) on my machine un-optimized:

    
    
         var bytes = [UInt8](count: 16_737_732, reapeatedValue: 0)
    

This was slow enough to block my UI (spinning pizza) -- so I ran it on a
background thead!. Turn on optimization and it took a more reasonable 0.0165
seconds. BTW, took C's memset only 0.00827 seconds on the same machine.

I switched back to my beloved Objective-C for the app I was developing. Won't
be using Swift for low-level image processing.

~~~
tentaTherapist
You say 'beloved Objective-C'. Sorry if this is really off topic, but is
objc_msgsend (the whole late-binding thing) or anything else about Objective-C
particularly appealing? Maybe the decent unoptimized speeds or the fact that
you can use plain C whenever?

~~~
waynecochran
I love C because I do a lot of low-level programming and I feel closer to the
machine with C. For higher level UI stuff I like the Smalltalk extensions to C
and Obj-C's dynamic nature and the fact that I can use C (and C++ directly).

Also I have been programming the Mac for a long time and I have a lot of
mental investment in Objective-C.

OTOH, I do like the functional, strongly-type features of Swift, but like any
higher level language I feel more removed from the machine. That's the price
for abstraction.

------
tzahola
Why does every Swift article use emojis in their code samples?

~~~
ovao
I imagine because Swift famously touted the ability to use emojis as
identifiers.

------
Someone
This article says _”Array can be toll-free bridged to an NSArray”_ , but is
the reverse true, too?

[https://developer.apple.com/library/content/documentation/Sw...](https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.html)
says the two are bridged, but doesn’t mention whether that is toll-free.

If that is toll-free, users of Array, just as users of NSArray, should be
aware that indexing in them can be O(log n). See
[http://ridiculousfish.com/blog/posts/array.html](http://ridiculousfish.com/blog/posts/array.html)

------
dep_b
Very fascinating stuff, also follow the link at the bottom of the article
towards another explanation with visuals how arrays are structured.

Honestly I never run into performance problems since the volume of data I work
with is either really huge and done in a C or C++-based library or so small I
would never think about array performance.

~~~
valuearb
Almost always, worrying about arrays is premature optimization.

~~~
whowouldathunk
On the contrary, developing a good intuition about stuff like this so you get
it right the first time is a big time saver in the long run. Especially when
it's no extra code to do the better thing to begin with.

Good developers have battery empathy.

~~~
pjmlp
Good developers know when to use profilers.

