[swift-dev] Profiling ARC
Roman Levenstein
rlevenstein at apple.com
Fri Feb 17 16:55:46 CST 2017
> On Feb 17, 2017, at 2:31 PM, Michael Gottesman via swift-dev <swift-dev at swift.org> wrote:
>
>>
>> On Feb 17, 2017, at 11:30 AM, David P Grove via swift-dev <swift-dev at swift.org <mailto:swift-dev at swift.org>> wrote:
>>
>> swift-dev-bounces at swift.org <mailto:swift-dev-bounces at swift.org> wrote on 02/16/2017 09:48:28 PM:
>> >
>> > I was curious about the overhead of ARC and started profiling some
>> > benchmarks found in the Computer Language Benchmark Game (http://
>> > benchmarksgame.alioth.debian.org/u64q/measurements.php?lang=swift <http://benchmarksgame.alioth.debian.org/u64q/measurements.php?lang=swift>).
>> > So far, it seems that ARC sequence optimization is surprisingly good
>> > and most benchmarks don't have to perform ARC operations as often as
>> > I expected. I have some questions regarding this finding.
>> >
>> > I compiled all benchmarks with "-O -wmo" flags and counted the
>> > number of calls to ARC runtime (e.g., swift_rt_swift_retain) using Pin.
>> >
>> > 1. Reference counting is considered to have high overhead due to
>> > frequent counting operations which also have to be atomic. At least
>> > for the benchmarks I tested, it is not the case and there is almost
>> > no overhead. Is it expected behavior? Or is it because the
>> > benchmarks are too simple (they are all single-file programs)? How
>> > do you estimate the overhead of ARC would be?
>> >
>>
>> hmm, I wonder if your method of profiling is really finding all the ARC operations. The Swift version of regex-dna is about 25x slower than the Java version (on Linux). I looked at some prof profiles about a month ago and at the time roughly 80% of all execution samples were attributed to swift_retain/swift_release operations coming from CoreFoundation's regex implementation.
>>
> Question. Where is this regex-dna benchmark, is it in the swift benchmark suite?
Here is a Swift version:
http://benchmarksgame.alioth.debian.org/u64q/program.php?test=regexdna&lang=swift&id=2 <http://benchmarksgame.alioth.debian.org/u64q/program.php?test=regexdna&lang=swift&id=2>
And here is a Java version:
http://benchmarksgame.alioth.debian.org/u64q/program.php?test=regexdna&lang=java&id=7 <http://benchmarksgame.alioth.debian.org/u64q/program.php?test=regexdna&lang=java&id=7>
And, BTW, Swift version is not multi-threaded, but Java version is.
>>
>> --dave
>>
>> (See attached file: regex-dna.svg)
>>
>> <regex-dna.svg>_______________________________________________
>> swift-dev mailing list
>> swift-dev at swift.org <mailto:swift-dev at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-dev <https://lists.swift.org/mailman/listinfo/swift-dev>
>
> _______________________________________________
> swift-dev mailing list
> swift-dev at swift.org <mailto:swift-dev at swift.org>
> https://lists.swift.org/mailman/listinfo/swift-dev <https://lists.swift.org/mailman/listinfo/swift-dev>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20170217/a8831f2d/attachment.html>
More information about the swift-dev
mailing list