mandelbrot Pharo Smalltalk #2 program
source code
"* The Computer Language Benchmarks Game
https://salsa.debian.org/benchmarksgame-team/benchmarksgame/
contributed by Paolo Bonzini
reworked by Isaac Gouy *"!
Object subclass: #BenchmarksGame
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'benchmarks game'!
!BenchmarksGame class methodsFor: 'private'!
mandelbrot: extent to: output
| limit2 m bits zr zi cr ci i tr stepr stepi |
limit2 := 4.0d0.
m := 50.
stepr := 2.0d0 / extent.
stepi := 2.0d0 / extent.
0 to: extent - 1 do: [ :y |
bits := 0.
ci := stepi * y asFloat - 1.0d0.
0 to: extent - 1 do: [ :x |
cr := stepr * x asFloat - 1.5d0.
zr := cr. zi := ci.
bits := bits bitShift: 1.
i := 1.
[
tr := (zr*zr) - (zi*zi) + cr.
zi := 2.0d0 * zr * zi + ci.
zr := tr.
(zr*zr) + (zi*zi) < limit2 and: [ (i := i + 1) < m ]
] whileTrue.
i = m ifTrue: [ bits := bits + 1 ].
(x bitAnd: 7) == 7 ifTrue: [
output nextPut: bits.
bits := 0.
]
].
(extent bitAnd: 7) == 0 ifFalse: [
bits := bits bitShift: 8 - (extent bitAnd: 7).
output nextPut: bits.
]
]! !
!BenchmarksGame class methodsFor: 'initialize-release'!
do: n
| out |
Stdio stdout
nextPutAll: 'P4'; lf;
print: n; nextPutAll: ' '; print: n; lf;
binary.
out := (ZnBufferedWriteStream on: Stdio stdout).
self mandelbrot: n to: out.
out flush! !
notes, command-line, and program output
NOTES:
64-bit Ubuntu quad core
Pharo 12.0.0
Pharo-12.0.0+SNAPSHOT.build.1507.sha.
a4f8da8972214b9c9c39c33e826394a109911041 (64 Bit)
Compiler: 5.4.0 20160609
Wed, 29 May 2024 02:32:46 GMT
MAKE:
cp /opt/src/pharo-vm-Linux-x86_64-stable/Pharo12.0-SNAPSHOT-64bit-a4f8da8.image mandelbrot.pharo-2.pharo_run.image
cp /opt/src/pharo-vm-Linux-x86_64-stable/Pharo12.0-SNAPSHOT-64bit-a4f8da8.changes mandelbrot.pharo-2.pharo_run.changes
ln -s /opt/src/pharo-vm-Linux-x86_64-stable/Pharo12.0-64bit-a4f8da8.sources .
cat Include/pharo/make.st
| prog |
(SystemWindow windowsIn: World
satisfying: [:w | w model canDiscardEdits])
do: [:w | w delete].
"load program to be measured"
prog := Smalltalk getSystemAttribute: 3.
(prog notNil) ifTrue: [prog asFileReference fileIn].
ImageCleaner cleanUpForRelease.
Smalltalk garbageCollect.
SmalltalkImage current snapshot: true andQuit: true.
/opt/src/pharo-vm-Linux-x86_64-stable/pharo --headless mandelbrot.pharo-2.pharo_run.image Include/pharo/make.st mandelbrot.pharo-2.pharo
cat Include/pharo/main.st
BenchmarksGame do: (Smalltalk getSystemAttribute: 3) asInteger.!
SmalltalkImage current snapshot: false andQuit: true!
32.45s to complete and log all make actions
COMMAND LINE:
/opt/src/pharo-vm-Linux-x86_64-stable/pharo --headless mandelbrot.pharo-2.pharo_run.image Include/pharo/main.st 16000
(BINARY) PROGRAM OUTPUT NOT SHOWN