Skip to content
Martín Dias edited this page Jul 2, 2026 · 34 revisions

Welcome to the BlocBenchs wiki!

Install

  1. Download Pharo 13 or 14

  2. Load the baseline with:

Metacello new
        baseline: 'BlocBenchs';
        repository: 'github://pharo-graphics/BlocBenchs:master/src';
        load

Lock dependencies

The following script may be convenient to prepare your image, before loading BlocBenchs, if you already have dependencies loaded with non-master branches.

#('Spec-Toplo' Toplo Album Bloc Alexandrie) do: [ :each |
	Metacello new
		baseline: each;
		lock ].

Build bash script

We have a build script that downloads Pharo and loads the project. It's prepared to work on MacOS, Linux and Windows (tested with the bash shell terminal that comes with git for Windows).

To use it:

  1. Clone this repository (this will be the <repo_path>)
  2. Create anywhere in your system a directory where the image will be build, and open a terminal there.
  3. Execute <repo_path>/scripts/build.sh

Switch to dev branches

By convention, the baselines depend on other's master branch. But working on dev often requires switching to dev branches. This script is optimistic: it assumes there are no conflicts:

{
	'alexandrie'.
	'bloc'.
	'album'.
	'toplo'.
	'spec-toplo'.
} do: [ :repoName |
	(IceRepository registry
		select: [ :each | each name asLowercase = repoName ])
		do:[ :each |
			(each branchNamed: 'dev') checkout.
			each fetch; pull ] ]
	displayingProgress: [ :each | each ]

How to use

You can find executable entry-points here:

  • Inspect the result of a run of any class in the hierarchy of BlBCase, e.g. BlBDashedBorderCirclesCase run inspect
  • Evaluate BlbSpaceTallyPrinter runToStdout to stdout a ranking of memory consumption
  • Run BlMouseMoveBenchmark exampleRun to stress mouse move events (read results on Transcript).
  • Run BlFPSTracer exampleOfUse to see basic animation statistics on Transcript.
  • Evaluate AeBenchBlurRectangleRunner benchAllVsGaussian to compare different ways of emulating a Gaussian blur
  • Run AeBenchFigureGridRunner in BlocBenchs-Alexandrie
  • Build and run circle_bench.c to compare it with AeBenchFigureGridRunner. It shows a scenario where FFI is not a bottleneck: overhead is not significant compared to cairo's rasterization time

Clone this wiki locally