This repository was archived by the owner on May 16, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 36
This repository was archived by the owner on May 16, 2025. It is now read-only.
Slow initialization of String objects from Collection/Sequence #63
Copy link
Copy link
Open
Description
It seems Swift for the RPi has performance issues. The following program is a good example.
// Swift 5.1.2 - 1mil3.swift
var s = ""
var t = ""
var a = [Int]()
for x in 1...1000000 {
s += String(UnicodeScalar(UInt8(((x - 1) % 26) + 65)))
a.append(x)
if s.count == 26 {
t += s
s = ""
}
}
let r = String(t.reversed())
print("r LEN: ", r.count)
print("Front: \(r.prefix(26))")
print("Back: \(r.suffix(26))")
print("UBVal: ", a[100000 - 1])
RPI 4B 4GB
$ /usr/bin/time ./main
r LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back: ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 100000
322.51user 0.07system 5:22.70elapsed 99%CPU (0avgtext+0avgdata 13836maxresident)k
0inputs+0outputs (0major+3470minor)pagefaults 0swaps
(Without String reverse)
$ /usr/bin/time ./main
r LEN: 999986
Front: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Back: ABCDEFGHIJKLMNOPQRSTUVWXYZ
UBVal: 100000
36.12user 0.04system 0:36.17elapsed 99%CPU (0avgtext+0avgdata 12800maxresident)k
0inputs+0outputs (0major+2925minor)pagefaults 0swaps
Ubuntu Lenovo Laptop
$ /usr/bin/time ./main
r LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back: ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 100000
0.45user 0.01system 0:00.47elapsed 99%CPU (0avgtext+0avgdata 20132maxresident)k
0inputs+8outputs (0major+5273minor)pagefaults 0swaps
Swift 4.1.5 Windows Lenovo Laptop
PS C:\Swift\examples> Measure-Command {.\main.exe | Out-Default}
r LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back: ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 100000
Days : 0
Hours : 0
Minutes : 0
Seconds : 1
Milliseconds : 305
Ticks : 13053398
TotalDays : 1.5108099537037E-05
TotalHours : 0.000362594388888889
TotalMinutes : 0.0217556633333333
TotalSeconds : 1.3053398
TotalMilliseconds : 1305.3398
The Swift Online Playground also returns a result almost instantly.
Something is horribly wrong IMHO.
Metadata
Metadata
Assignees
Labels
No labels