fix #16752: threadvar now works with importcpp types; osx now uses native TLS (--tlsEmulation:off), which can be orders of magnitude faster (#16750)

* osx now uses native TLS, which can be orders of magnitude faster

* add {.cppNonPod.}

* improve test

* changelog, docs, disable part of windows test
This commit is contained in:
Timothee Cour 2021-01-27 13:35:43 -08:00 • committed by GitHub
commit e112974920
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 194 additions and 13 deletions

30
tests/benchmarks/ttls.nim Normal file
View file

@ -0,0 +1,30 @@
discard """
action: compile
"""
#[
## on osx
nim r -d:danger --threads --tlsEmulation:off tests/benchmarks/ttls.nim
9.999999999992654e-07
ditto with `--tlsEmulation:on`:
0.216999
]#
import times
proc main2(): int =
var g0 {.threadvar.}: int
g0.inc
result = g0
proc main =
let n = 100_000_000
var c = 0
let t = cpuTime()
for i in 0..<n:
c += main2()
let t2 = cpuTime() - t
doAssert c != 0
echo t2
main()