Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.forth > #5532
| From | mhx@iae.nl (Marcel Hendrix) |
|---|---|
| Subject | Re: min-max-sum |
| Newsgroups | comp.lang.forth |
| Message-ID | <10611399948436@frunobulax.edu> (permalink) |
| Date | 2011-09-04 22:42 +0200 |
| References | <2011Sep4.151850@mips.complang.tuwien.ac.at> |
| Organization | SunSITE.dk - Supporting Open source |
anton@mips.complang.tuwien.ac.at (Anton Ertl) writes Re: min-max-sum
[..]
> Anyway, I have now benchmarked the three different approaches on
> vfxlin (program appended below):
> 1) using a separate loop for each aggregation (simple)
> 2) using one loop and keeping the intermediate results on the data stack (rot)
> 3) using one loop and keeping the intermediate results in a struct (haley)
I added a few more, and even one that uses CODE.
> The results are:
> [c8:~/forth:30521] time vfxlin "include min-max-sum.fs bench-simple bye" >/dev/null
> real 0m0.713s
[..]
> [c8:~/forth:30522] time vfxlin "include min-max-sum.fs bench-rot bye" >/dev/null
> real 0m0.442s
[..]
> [c8:~/forth:30523] time vfxlin "include min-max-sum.fs bench-haley bye" >/dev/null
> real 0m2.935s
[..]
> Not sure what's so slow in the haley code, but if someone wants to
> investigate, the code is shown below.
You inadvertedly wrote "loop" instead of "1 cells +loop" :-)
In this case the error is important because it may bias one's appreciation for the
haley solution.
It is important not to use uninitialized HERE for the test area because
number formatting may overwrite this area between individual benchmarks
(your test method has no problem with it).
What is the specification for the machine you tested on? I used a 2.67 GHz
i7 quad core. The speed for 64 and 32-bit code is (nearly) the same.
-marcel
-- ---------------------
ANEW -summinmax
NEEDS -assemble
: asum ( addr ucells -- n )
0 rot rot cells over + swap ?do
i @ +
[ 1 cells ] literal +loop ;
: amin ( addr ucells -- n )
maxint rot rot cells over + swap ?do
i @ min
[ 1 cells ] literal +loop ;
: amax ( addr ucells -- n )
minint rot rot cells over + swap ?do
i @ max
[ 1 cells ] literal +loop ;
: simple ( addr ucells -- nsum nmax nmin )
2dup amin >r
2dup amax >r
asum r> r> ;
: sum-min-max ( addr ucells -- nsum nmax nmin )
2>r 0 minint maxint 2r> cells over + swap ?do ( nsum' nmax' nmin' )
rot i @ +
rot i @ max
rot i @ min
[ 1 cells ] literal +loop ;
: sum-min-max-my ( addr ucells -- nsum nmax nmin )
2>r 0 minint maxint 2r>
1-
FOR
@+ 2>R
rot r@ +
rot r@ max
rot r> min
R>
NEXT drop ;
: sum-min-max-my-1 ( addr ucells -- nsum nmax nmin )
0 minint maxint locals| =min =max =sum |
1-
FOR
@+
dup +TO =sum
dup =max max TO =max
=min min TO =min
NEXT drop
=sum =max =min ;
64bit? [if]
: sum-min-max-my-2 ( addr ucells -- nsum nmax nmin )
swap >r 0 maxint minint r> params| =sum =min =max =addr |
1-
FOR
ASM{
[rsi #48 +] qword -> rbx mov,
[rbx] -> rax mov, \ @+
8 b# -> rbx add,
rbx -> [rsi #48 +] qword mov,
rax -> [rsi] add, \ dup +TO =sum
[rsi #16 +] qword -> rcx mov, \ =max
rax -> rcx cmp, \ over max
rax -> rcx cmovg,
rcx -> [rsi #16 +] qword mov, \ TO =max
[rsi #32 +] qword -> rcx mov, \ =min
rax -> rcx cmp, \ over min
rax -> rcx cmovl,
rcx -> [rsi #32 +] qword mov, \ TO =min
}ASM
NEXT
=sum =max =min ;
[else]
: sum-min-max-my-2 ( addr ucells -- nsum nmax nmin )
swap >r 0 maxint minint r> params| =sum =min =max =addr |
1-
FOR
ASM{
[esi #48 +] dword -> ebx mov,
[ebx] -> eax mov, \ @+
4 b# -> ebx add,
ebx -> [esi #48 +] dword mov,
eax -> [esi] add, \ dup +TO =sum
[esi #16 +] dword -> ecx mov, \ =max
eax -> ecx cmp, \ over max
eax -> ecx cmovg,
ecx -> [esi #16 +] dword mov, \ TO =max
[esi #32 +] dword -> ecx mov, \ =min
eax -> ecx cmp, \ over min
eax -> ecx cmovl,
ecx -> [esi #32 +] dword mov, \ TO =min
}ASM
NEXT
=sum =max =min ;
[then]
\ define a struct the VFX way :-)
: f_sum ;
: f_max cell+ ;
: f_min 2 cells + ;
create some-f 3 cells allot
: max! ( n addr -- )
dup @ rot max swap ! ;
: min! ( n addr -- )
dup @ rot min swap ! ;
: haley ( addr ucells f-addr -- )
0 over f_sum !
minint over f_max !
maxint over f_min !
rot rot cells over + swap do
i @ over f_sum +!
i @ over f_max max!
i @ over f_min min!
cell +loop drop ;
: data here #10000 CELLS +
dup #100000 1 fill ; \ number formatting ... :-)
: bench-simple ( -- )
CR ." simple : " TIMER-RESET
0 0 0
#100 0 ?do
3drop data #1000000 simple
loop
rot . swap . . .ELAPSED ;
: bench-rot ( -- )
CR ." rot : " TIMER-RESET
0 0 0
#100 0 ?do
3drop data #1000000 sum-min-max
loop
rot . swap . . .ELAPSED ;
: bench-rot-my ( -- )
CR ." rot-my : " TIMER-RESET
0 0 0
#100 0 ?do
3drop data #1000000 sum-min-max-my
loop
rot . swap . . .ELAPSED ;
: bench-rot-my-1 ( -- )
CR ." rot-my-1 : " TIMER-RESET
0 0 0
#100 0 ?do
3drop data #1000000 sum-min-max-my-1
loop
rot . swap . . .ELAPSED ;
: bench-rot-my-2 ( -- )
CR ." rot-my-2 : " TIMER-RESET
0 0 0
#100 0 ?do
3drop data #1000000 sum-min-max-my-2
loop
rot . swap . . .ELAPSED ;
: bench-haley ( -- )
CR ." haley : " TIMER-RESET
#100 0 ?do
data #1000000 some-f haley
loop
some-f @+ . @+ . @ . .ELAPSED ;
DOC
(*
The results are:
[c8:~/forth:30521] time vfxlin "include min-max-sum.fs bench-simple bye" >/dev/null
real 0m0.713s
user 0m0.696s
sys 0m0.008s
[c8:~/forth:30522] time vfxlin "include min-max-sum.fs bench-rot bye" >/dev/null
real 0m0.442s
user 0m0.432s
sys 0m0.008s
[c8:~/forth:30523] time vfxlin "include min-max-sum.fs bench-haley bye" >/dev/null
real 0m2.935s
user 0m2.912s
sys 0m0.008s
Try: bench-simple bench-haley bench-rot bench-rot-my bench-rot-my-1 bench-rot-my-2
VFX: 0.713 2.935 0.442 ? ? ?
simple : 361700864190383316 72340172838076673 0 1.135 seconds elapsed.
haley : 361700864190383316 72340172838076673 0 0.820 seconds elapsed.
rot : 361700864190383316 72340172838076673 0 0.838 seconds elapsed.
rot-my : 361700864190383316 72340172838076673 0 0.722 seconds elapsed.
rot-my-1 : 361700864190383316 72340172838076673 0 0.507 seconds elapsed.
rot-my-2 : 361700864190383316 72340172838076673 0 0.326 seconds elapsed. ok
*)
ENDDOC
CR .( Try: bench-simple bench-haley bench-rot bench-rot-my bench-rot-my-1 bench-rot-my-2 )
CR .( VFX: 0.713 2.935 0.442 ? ? ? )
CR
bench-simple bench-haley bench-rot bench-rot-my bench-rot-my-1 bench-rot-my-2
Back to comp.lang.forth | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
A Minimal Extended Control Wordset JennyB <jennybrien@googlemail.com> - 2011-08-24 07:01 -0700
Re: A Minimal Extended Control Wordset JennyB <jennybrien@googlemail.com> - 2011-08-24 07:50 -0700
Re: A Minimal Extended Control Wordset Alex McDonald <blog@rivadpm.com> - 2011-08-24 08:04 -0700
Re: A Minimal Extended Control Wordset JennyB <jennybrien@googlemail.com> - 2011-08-24 08:59 -0700
Re: A Minimal Extended Control Wordset coos haak <chforth@hccnet.nl> - 2011-08-24 20:00 +0200
Re: A Minimal Extended Control Wordset JennyB <jennybrien@googlemail.com> - 2011-08-24 14:03 -0700
Re: A Minimal Extended Control Wordset coos haak <chforth@hccnet.nl> - 2011-08-26 20:36 +0200
Re: A Minimal Extended Control Wordset JennyB <jennybrien@googlemail.com> - 2011-08-24 07:54 -0700
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-09-12 09:43 -0700
Re: A Minimal Extended Control Wordset "Rod Pemberton" <do_not_have@noavailemail.cmm> - 2011-08-24 18:52 -0400
Re: A Minimal Extended Control Wordset JennyB <jennybrien@googlemail.com> - 2011-08-25 06:52 -0700
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-08-26 12:23 +1000
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-08-25 21:03 -0700
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-08-26 20:02 +1000
Re: A Minimal Extended Control Wordset JennyB <jennybrien@googlemail.com> - 2011-08-26 04:36 -0700
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-08-26 10:42 -0700
Re: A Minimal Extended Control Wordset JennyB <jennybrien@googlemail.com> - 2011-08-27 14:45 -0700
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-08-27 17:13 -0700
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-08-26 10:16 -0700
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-08-25 09:46 -0700
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-08-25 20:54 -0700
Re: A Minimal Extended Control Wordset JennyB <jennybrien@googlemail.com> - 2011-08-26 10:24 -0700
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-08-26 11:04 -0700
Re: A Minimal Extended Control Wordset JennyB <jennybrien@googlemail.com> - 2011-08-31 04:14 -0700
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-08-31 15:25 -0700
Re: A Minimal Extended Control Wordset JennyB <jennybrien@googlemail.com> - 2011-09-01 04:00 -0700
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-09-01 12:47 -0700
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-08-27 13:18 +1000
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-08-27 04:41 -0700
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-08-28 13:28 +1000
Re: A Minimal Extended Control Wordset "Elizabeth D. Rather" <erather@forth.com> - 2011-08-27 18:32 -1000
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-08-29 12:32 +1000
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-08-28 09:22 -0700
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-08-29 12:30 +1000
Re: A Minimal Extended Control Wordset "Elizabeth D. Rather" <erather@forth.com> - 2011-08-28 18:17 -1000
return address manipulation (was: A Minimal Extended Control Wordset) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2011-08-29 09:14 +0000
Re: return address manipulation Andrew Haley <andrew29@littlepinkcloud.invalid> - 2011-08-29 05:53 -0500
Re: return address manipulation anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2011-08-29 11:45 +0000
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-08-30 14:08 +1000
Re: A Minimal Extended Control Wordset "Elizabeth D. Rather" <erather@forth.com> - 2011-08-29 18:28 -1000
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-08-31 13:52 +1000
Re: A Minimal Extended Control Wordset "Elizabeth D. Rather" <erather@forth.com> - 2011-08-30 21:42 -1000
Re: A Minimal Extended Control Wordset Paul Rubin <no.email@nospam.invalid> - 2011-08-31 00:47 -0700
Re: A Minimal Extended Control Wordset "Elizabeth D. Rather" <erather@forth.com> - 2011-08-30 21:55 -1000
Re: A Minimal Extended Control Wordset Paul Rubin <no.email@nospam.invalid> - 2011-09-01 00:44 -0700
Re: A Minimal Extended Control Wordset Andrew Haley <andrew29@littlepinkcloud.invalid> - 2011-09-01 03:37 -0500
Re: A Minimal Extended Control Wordset Paul Rubin <no.email@nospam.invalid> - 2011-09-01 02:19 -0700
Re: A Minimal Extended Control Wordset Andrew Haley <andrew29@littlepinkcloud.invalid> - 2011-09-01 05:05 -0500
min-max-sum (was: A Minimal Extended Control Wordset) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2011-09-01 14:32 +0000
Re: min-max-sum Andrew Haley <andrew29@littlepinkcloud.invalid> - 2011-09-01 10:43 -0500
Re: min-max-sum anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2011-09-01 15:59 +0000
Re: min-max-sum BruceMcF <agila61@netscape.net> - 2011-09-01 13:13 -0700
Re: min-max-sum Andrew Haley <andrew29@littlepinkcloud.invalid> - 2011-09-02 04:12 -0500
Re: min-max-sum Andrew Haley <andrew29@littlepinkcloud.invalid> - 2011-09-02 04:31 -0500
Re: min-max-sum anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2011-09-02 10:41 +0000
Re: min-max-sum Andrew Haley <andrew29@littlepinkcloud.invalid> - 2011-09-02 06:31 -0500
Re: min-max-sum anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2011-09-04 13:18 +0000
Re: min-max-sum mhx@iae.nl (Marcel Hendrix) - 2011-09-04 22:42 +0200
Re: min-max-sum anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2011-09-05 08:16 +0000
Re: min-max-sum Andrew Haley <andrew29@littlepinkcloud.invalid> - 2011-09-05 02:58 -0500
Re: min-max-sum BruceMcF <agila61@netscape.net> - 2011-09-02 08:43 -0700
Re: min-max-sum coos haak <chforth@hccnet.nl> - 2011-09-02 20:35 +0200
Re: min-max-sum BruceMcF <agila61@netscape.net> - 2011-09-03 11:48 -0700
Re: min-max-sum BruceMcF <agila61@netscape.net> - 2011-09-04 18:31 -0700
Re: min-max-sum Alex McDonald <blog@rivadpm.com> - 2011-09-02 05:37 -0700
Re: min-max-sum mhx@iae.nl (Marcel Hendrix) - 2011-09-03 12:06 +0200
Re: A Minimal Extended Control Wordset Paul Rubin <no.email@nospam.invalid> - 2011-09-04 22:07 -0700
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-09-04 22:56 -0700
Re: A Minimal Extended Control Wordset C G Montgomery <cgm@physics.utoledo.edu> - 2011-09-05 17:44 -0400
Re: A Minimal Extended Control Wordset Paul Rubin <no.email@nospam.invalid> - 2011-09-05 18:10 -0700
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-09-01 11:01 -0700
Re: A Minimal Extended Control Wordset "Elizabeth D. Rather" <erather@forth.com> - 2011-09-01 09:17 -1000
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-09-01 13:39 +1000
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-09-01 10:21 -0700
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-09-05 12:24 +1000
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-09-04 21:11 -0700
Re: A Minimal Extended Control Wordset Albert van der Horst <albert@spenarnc.xs4all.nl> - 2011-09-06 18:13 +0000
Re: A Minimal Extended Control Wordset Alex McDonald <blog@rivadpm.com> - 2011-09-06 12:15 -0700
Re: A Minimal Extended Control Wordset "Elizabeth D. Rather" <erather@forth.com> - 2011-09-06 09:53 -1000
Re: A Minimal Extended Control Wordset Alex McDonald <blog@rivadpm.com> - 2011-09-06 14:18 -0700
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-09-06 17:32 -0700
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-09-07 19:43 +1000
Re: A Minimal Extended Control Wordset Andrew Haley <andrew29@littlepinkcloud.invalid> - 2011-09-07 06:02 -0500
Re: A Minimal Extended Control Wordset Alex McDonald <blog@rivadpm.com> - 2011-09-07 05:41 -0700
Re: A Minimal Extended Control Wordset anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2011-09-07 16:00 +0000
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-09-09 08:52 +1000
Re: A Minimal Extended Control Wordset Alex McDonald <blog@rivadpm.com> - 2011-09-08 16:08 -0700
Re: A Minimal Extended Control Wordset George Hubert <georgeahubert@yahoo.co.uk> - 2011-09-09 04:12 -0700
Re: A Minimal Extended Control Wordset Albert van der Horst <albert@spenarnc.xs4all.nl> - 2011-09-10 09:09 +0000
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-09-11 18:29 +1000
Re: A Minimal Extended Control Wordset Alex McDonald <blog@rivadpm.com> - 2011-09-11 09:04 -0700
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-09-15 19:25 +1000
Re: A Minimal Extended Control Wordset Alex McDonald <blog@rivadpm.com> - 2011-09-15 03:30 -0700
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-09-18 15:43 +1000
Re: A Minimal Extended Control Wordset "Elizabeth D. Rather" <erather@forth.com> - 2011-09-17 20:42 -1000
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-09-19 05:14 +1000
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-09-18 19:31 -0700
Re: A Minimal Extended Control Wordset Andrew Haley <andrew29@littlepinkcloud.invalid> - 2011-09-18 01:49 -0500
Re: A Minimal Extended Control Wordset "Elizabeth D. Rather" <erather@forth.com> - 2011-09-08 14:56 -1000
Re: A Minimal Extended Control Wordset anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2011-09-09 08:20 +0000
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-09-11 16:22 +1000
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-09-11 03:06 -0700
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-09-08 19:29 -0700
Re: A Minimal Extended Control Wordset Brad <hwfwguy@gmail.com> - 2011-09-08 08:58 -0700
Re: A Minimal Extended Control Wordset Alex McDonald <blog@rivadpm.com> - 2011-09-08 10:00 -0700
Re: A Minimal Extended Control Wordset coos haak <chforth@hccnet.nl> - 2011-09-08 22:00 +0200
Re: A Minimal Extended Control Wordset Alex McDonald <blog@rivadpm.com> - 2011-09-08 16:02 -0700
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-09-09 09:16 +1000
Re: A Minimal Extended Control Wordset "Elizabeth D. Rather" <erather@forth.com> - 2011-09-08 15:04 -1000
Re: A Minimal Extended Control Wordset Andrew Haley <andrew29@littlepinkcloud.invalid> - 2011-09-09 04:13 -0500
Re: A Minimal Extended Control Wordset Brad <hwfwguy@gmail.com> - 2011-08-31 09:20 -0700
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-08-28 21:31 -0700
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-08-31 13:53 +1000
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-08-31 04:11 -0700
Re: A Minimal Extended Control Wordset "Ed" <nospam@invalid.com> - 2011-09-01 14:47 +1000
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-09-01 10:32 -0700
Re: A Minimal Extended Control Wordset BruceMcF <agila61@netscape.net> - 2011-09-01 10:33 -0700
csiph-web