Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connectionsPath: ...!weretis.net!feeder8.news.weretis.net!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: anton@mips.complang.tuwien.ac.at (Anton Ertl)
Newsgroups: comp.lang.forth
Subject: locals slowness in sf and vfx (was: SEND+MORE=MONEY)
Date: Thu, 09 Feb 2023 17:13:54 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 30
Message-ID: <2023Feb9.181354@mips.complang.tuwien.ac.at>
References: <78cfcd0a-5bc4-4584-8a92-9e8005a0e306n@googlegroups.com> <87ttzvzmmb.fsf@nightsong.com> <2023Feb9.084758@mips.complang.tuwien.ac.at> <138b28de-6f2a-449b-9279-629f3c17a03bn@googlegroups.com> <2023Feb9.115420@mips.complang.tuwien.ac.at>
Injection-Info: reader01.eternal-september.org; posting-host="4a23064dba6cc3b448d0d7b13f318f12";
logging-data="790587"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/ZWsfxH1vfQXUR3xommyNa"
Cancel-Lock: sha1:LcXNgSskggvHCsYhY6TXgCioi6Y=
X-newsreader: xrn 10.11
Bytes: 2373
anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:
>The lxf result demonstrates that locals can be implemented much more
>efficiently than in VFX or in SwiftForth.
One reason for the slowness of VFX and SwiftForth is that they produce
many more branch mispredictions (on Zen3):
lxf sf 4.0.0 RC52 vfx64 5.11 RC2
1_661_643_918 5_213_828_602 6_905_863_327 cycles:u
5_033_144_481 11_408_344_624 9_084_604_276 instructions:u
4_371_603 70_048_027 72_169_382 branch-misses
http://www.complang.tuwien.ac.at/forth/programs/sendmore.fth
A misprediction typically costs 20 cycles, so the 66M-68M additional
mispredictions cost 1.3G-1.4G cycles which does not explain all of the
slowdown, but a good part of it.
These mispredictions are caused by the technique of pushing an
additional return address that returns to other code than that where
the last call came from. The hardware return stack for branch
prediction was introduced at least 25 years ago, it's time that Forth
systems accept that reality and let go of this technique.
- anton
--
M. Anton Ertl http://www.complang.tuwien.ac.at/anton/home.html
comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
New standard: https://forth-standard.org/
EuroForth 2022: https://euro.theforth.net