Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #17697

Re: DTC

From Bernd Paysan <bernd.paysan@gmx.de>
Newsgroups comp.lang.forth
Subject Re: DTC
Date 2012-11-29 18:05 +0100
Organization 1&1 Internet AG
Message-ID <2700090.aQ2KJ0Axev@sunwukong.fritz.box> (permalink)
References (7 earlier) <3_idnYfdWuwR3ivNnZ2dnUVZ8tadnZ2d@supernews.com> <2012Nov28.181355@mips.complang.tuwien.ac.at> <25KdnaK6jvpvzCvNnZ2dnUVZ8radnZ2d@supernews.com> <2012Nov28.191254@mips.complang.tuwien.ac.at> <DMOdnf90lcNYxSvNnZ2dnUVZ8rqdnZ2d@supernews.com>

Show all headers | View raw


Andrew Haley wrote:
> You'll have to explain that a bit more; I don't understand the point
> you're making.

Let's give some typical code you can find in many applications; in this 
case we use it as micro-benchmark, it's a variable and the corresponding 
modifier function side by side:

Variable foo#
: foo+ 1 foo# +! ;
: foos 0 ?DO  foo+  LOOP ;

Test 1 is with foo#'s slot being in a different cache line as foo+ on a 
Core2:

!time #1000000 foos .time 0,005371 sec  ok
' foo+ . 1003350C  ok
foo# . 100334F8  ok

Test 2 is with foo#'s slot and foo+ in the same cache line, same Core2:

!time #1000000 foos .time 0,185575 sec  ok
' foo+ . 1003351C  ok     
foo# . 10033508  ok

Both tests done with bigForth.  Factor 37.  This is really significant.

Go to a different CPU, now instead of Core2, we chose an AMD Zacate, to 
see how that is affected by the problem:

Test 1: 0,008208 sec  ok
Test 2: 0,319169 sec  ok

Factor 39.  Not that different.

Same test with vfxForth on the same Zacate, for timing I use

LocalExtern: gettimeofday int gettimeofday ( int * , int * );
2variable tz 2variable td
: @time td tz gettimeofday drop td 2@ 1000000 um* rot 0 d+ ;

Test 1: 0.007708s
Test 2: 0.319617s

Factor 41.5 (the factor is higher, because VFX creates code that is a 
bit faster than bigForth's code).

Test 2 in VFX is more difficult to achieve than in bigForth.  First of 
all, Stephen *does* now use a different memory pool for variables and 
buffers, so if you declare foo# as VARIABLE, it will get allocated from 
somewhere else (no problem).  If you however declare foo# with CREATE 
FOO# 0 , it will be close to the executed code, but the tokenizer pads 
enough between FOO# and the actual increment instruction that it doesn't 
affect Zacate.

The lesson lerned is that:

* You should separate code and data
* VFX does a good job now on variables, but on CREATEd words, it is 
accidential
* bigForth doesn't, and as it compiles dense code without additional 
information, it quickly exposes the problem
* If you use such a system, declare your variables first, add maybe some 
padding, and then write your code

If I was going to write another code generator, I'd very likely use 
Gforth's approach: EXECUTE has an indirection (this is pretty cheap on 
current CPUs), and the dictionary contains variables, headers, and 
pointer to the actual code, but not the code itself.  It might also be 
possible to change CREATE so that it uses a different area for code and 
data, so that having a direct EXECUTE is possible.  Separated headers 
might give some benefits, but with a hash table, you don't pollute the 
cache much.

-- 
Bernd Paysan
"If you want it done right, you have to do it yourself"
http://bernd-paysan.de/

Back to comp.lang.forth | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

DTC Mark Wills <forthfreak@gmail.com> - 2012-11-27 08:01 -0800
  Re: DTC Paul Rubin <no.email@nospam.invalid> - 2012-11-27 08:55 -0800
    Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-11-27 09:01 -0800
  Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-11-27 17:42 -0800
    Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-11-27 23:50 -0800
      Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 04:41 -0600
        Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-11-28 02:48 -0800
          Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 05:27 -0600
            Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-11-28 03:51 -0800
              Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-11-28 21:56 -0800
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-11-29 01:26 -0800
                Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-11-29 22:34 -0800
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-11-30 01:42 -0800
                Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-11-30 13:18 -0800
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-01 01:42 -0800
                Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-12-03 15:25 -0800
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-12-03 16:18 -0800
                Re: DTC "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-12-03 21:20 -0500
                Re: DTC "Elizabeth D. Rather" <erather@forth.com> - 2012-12-03 17:29 -1000
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-04 00:12 -0800
                Re: DTC Paul Rubin <no.email@nospam.invalid> - 2012-12-05 11:35 -0800
                Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-12-04 20:17 -0800
                Re: DTC Ron Aaron <rambamist@gmail.com> - 2012-12-05 08:31 +0200
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-04 23:48 -0800
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-04 23:53 -0800
                Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-12-05 12:13 -0800
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-12-05 15:26 -0800
                Re: DTC Ron Aaron <rambamist@gmail.com> - 2012-12-06 06:32 +0200
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-06 01:07 -0800
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-12-06 04:23 -0800
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-06 15:49 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-06 07:42 -0800
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-12-06 08:30 -0800
                Re: DTC Paul Rubin <no.email@nospam.invalid> - 2012-12-06 09:45 -0800
                Re: DTC albert@spenarnc.xs4all.nl (Albert van der Horst) - 2012-12-06 21:41 +0000
                Re: DTC "A. K." <akk@nospam.org> - 2012-12-06 23:15 +0100
                Re: DTC albert@spenarnc.xs4all.nl (Albert van der Horst) - 2012-12-08 01:27 +0000
                Re: DTC "A. K." <akk@nospam.org> - 2012-12-08 11:19 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-08 03:55 -0800
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-08 13:44 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-08 06:05 -0800
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-08 18:35 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-08 11:20 -0800
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-09 01:01 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-08 06:10 -0800
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-08 18:57 +0100
                Re: DTC "A. K." <akk@nospam.org> - 2012-12-08 19:46 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-08 11:23 -0800
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-08 13:37 +0100
                Re: DTC "A. K." <akk@nospam.org> - 2012-12-08 14:41 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-08 06:15 -0800
                Re: DTC "A. K." <akk@nospam.org> - 2012-12-08 17:07 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-06 14:16 -0800
                Re: DTC Brad Eckert <hwfwguy@gmail.com> - 2012-12-07 09:00 -0800
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-06 14:21 -0800
                Re: DTC "Elizabeth D. Rather" <erather@forth.com> - 2012-12-06 08:01 -1000
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-06 14:18 -0800
                Re: DTC "Elizabeth D. Rather" <erather@forth.com> - 2012-12-06 13:48 -1000
                Re: DTC "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-12-06 19:03 -0500
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-12-07 02:59 -0800
                Re: DTC albert@spenarnc.xs4all.nl (Albert van der Horst) - 2012-12-06 13:13 +0000
                Re: DTC "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-12-05 20:39 -0500
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-06 15:46 +0100
                Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-12-06 07:47 -0800
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-12-06 08:36 -0800
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-12-05 04:03 -0800
                Re: DTC "Clyde W. Phillips Jr." <cwpjr02@gmail.com> - 2012-12-06 20:30 -0800
                Re: DTC David Thompson <dave.thompson2@verizon.net> - 2012-12-11 23:52 -0500
                Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-12-12 10:59 -0800
                Re: DTC David Thompson <dave.thompson2@verizon.net> - 2012-12-31 02:43 -0500
                Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2013-01-02 00:44 -0800
            Re: DTC albert@spenarnc.xs4all.nl (Albert van der Horst) - 2012-11-28 13:54 +0000
              Re: DTC "Clyde W. Phillips Jr." <cwpjr02@gmail.com> - 2012-12-06 20:16 -0800
    Re: DTC "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-11-28 06:58 -0500
      Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-11-28 04:50 -0800
        Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 07:08 -0600
          Re: DTC Mark Wills <forthfreak@gmail.com> - 2012-11-28 06:02 -0800
            Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 08:23 -0600
          Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-28 14:18 +0000
            Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 08:32 -0600
              Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-28 15:00 +0000
                Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 09:18 -0600
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-28 16:36 +0000
                Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 11:02 -0600
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-28 17:13 +0000
                Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 12:03 -0600
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-28 18:12 +0000
                Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-28 12:32 -0600
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-29 14:30 +0000
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-11-29 18:05 +0100
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-11-29 11:19 -0800
                Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-30 03:14 -0600
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-30 14:12 +0000
                Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-30 10:32 -0600
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-30 16:40 +0000
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-12-01 15:34 +0000
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-01 21:23 +0100
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-12-03 16:28 +0000
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-03 18:44 +0100
                Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-12-03 04:50 -0600
                Re: DTC Bernd Paysan <bernd.paysan@gmx.de> - 2012-12-03 16:48 +0100
                Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-12-03 15:59 +0000
                Re: DTC albert@spenarnc.xs4all.nl (Albert van der Horst) - 2012-11-30 15:34 +0000
                Re: DTC Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-11-30 10:36 -0600
                Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-11-30 12:47 -0800
                Re: DTC Alex McDonald <blog@rivadpm.com> - 2012-11-28 11:29 -0800
        Re: DTC "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-11-29 04:15 -0500
          Re: DTC "Elizabeth D. Rather" <erather@forth.com> - 2012-11-29 08:52 -1000
      Re: DTC Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-11-28 22:25 -0800
        Re: DTC "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-11-29 04:12 -0500
  Re: DTC humptydumpty <ouatubi@gmail.com> - 2012-11-28 02:04 -0800
  Re: DTC anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-11-28 14:21 +0000

csiph-web