@@ -2,7 +2,7 @@ import * as flow from 'dropflow';
22import parse from 'dropflow/parse.js' ;
33import fs from 'fs' ;
44import { createCanvas } from 'canvas' ;
5- import { bench , run } from 'mitata' ;
5+ import { bench , run , do_not_optimize } from 'mitata' ;
66
77const p = ( p : string ) => new URL ( `../assets/${ p } ` , import . meta. url ) ;
88flow . fonts . add ( flow . createFaceFromTablesSync ( p ( 'Arimo/Arimo-Bold.ttf' ) ) ) ;
@@ -54,12 +54,26 @@ ctx.clearRect(0, 0, canvas.width, canvas.height);
5454flow . paintToCanvas ( blockContainer , ctx ) ;
5555fs . writeFileSync ( new URL ( 'perf-1.png' , import . meta. url ) , canvas . toBuffer ( ) ) ;
5656
57- bench ( '10 paragraphs generate, layout, and paint ' , ( ) => {
57+ bench ( 'altogether ' , ( ) => {
5858 const blockContainer = flow . generate ( rootElement ) ;
5959 flow . clearWordCache ( ) ;
6060 flow . layout ( blockContainer , canvas . width , canvas . height ) ;
6161 ctx . clearRect ( 0 , 0 , canvas . width , canvas . height ) ;
6262 flow . paintToCanvas ( blockContainer , ctx ) ;
63- } ) ;
63+ } ) . gc ( 'inner' ) ;
64+
65+ bench ( 'generate' , ( ) => {
66+ do_not_optimize ( flow . generate ( rootElement ) ) ;
67+ } ) . gc ( 'inner' ) ;
68+
69+ bench ( 'layout' , ( ) => {
70+ flow . clearWordCache ( ) ;
71+ flow . layout ( blockContainer , canvas . width , canvas . height ) ;
72+ } ) . gc ( 'inner' ) ;
73+
74+ bench ( 'paint' , ( ) => {
75+ ctx . clearRect ( 0 , 0 , canvas . width , canvas . height ) ;
76+ flow . paintToCanvas ( blockContainer , ctx ) ;
77+ } ) . gc ( 'inner' ) ;
6478
6579await run ( ) ;
0 commit comments