@@ -241,99 +241,3 @@ func BenchmarkNewWriter(b *testing.B) {
241241 }
242242 }
243243}
244-
245- // BenchmarkNewRewriterBuilder tests the cost of not caching the RewriterBuilder.
246- // In current implementation, every call to NewWriter involves creating a RewriterBuilder.
247- // Ideally, if multiple documents are to be processed at the same time, a RewriterBuilder
248- // is created in advance and kept in memory, and Rewriter-s could be built from it.
249- // This benchmark aims to find out the extent of its impact.
250- func BenchmarkNewRewriterBuilder (b * testing.B ) {
251- b .Run ("Builder" , func (b * testing.B ) {
252- for i := 0 ; i < b .N ; i ++ {
253- rb := lolhtml .NewRewriterBuilder ()
254- rb .Free ()
255- }
256- })
257- b .Run ("BuilderWithEmptyDocumentHandler" , func (b * testing.B ) {
258- for i := 0 ; i < b .N ; i ++ {
259- rb := lolhtml .NewRewriterBuilder ()
260- rb .AddDocumentContentHandlers (nil , nil , nil , nil )
261- rb .Free ()
262- }
263- })
264- b .Run ("BuilderWithEmptyElementHandler" , func (b * testing.B ) {
265- for i := 0 ; i < b .N ; i ++ {
266- rb := lolhtml .NewRewriterBuilder ()
267- s , _ := lolhtml .NewSelector ("*" )
268- rb .AddElementContentHandlers (s , nil , nil , nil )
269- rb .Free ()
270- s .Free ()
271- }
272- })
273- b .Run ("BuilderWithElementHandler" , func (b * testing.B ) {
274- for i := 0 ; i < b .N ; i ++ {
275- rb := lolhtml .NewRewriterBuilder ()
276- s , _ := lolhtml .NewSelector ("*" )
277- rb .AddElementContentHandlers (
278- s ,
279- func (e * lolhtml.Element ) lolhtml.RewriterDirective { return lolhtml .Continue },
280- nil ,
281- nil ,
282- )
283- rb .Free ()
284- s .Free ()
285- }
286- })
287- b .Run ("BuilderWithElementHandlerAndBuild" , func (b * testing.B ) {
288- for i := 0 ; i < b .N ; i ++ {
289- rb := lolhtml .NewRewriterBuilder ()
290- s , _ := lolhtml .NewSelector ("*" )
291- rb .AddElementContentHandlers (
292- s ,
293- func (e * lolhtml.Element ) lolhtml.RewriterDirective { return lolhtml .Continue },
294- nil ,
295- nil ,
296- )
297- r , _ := rb .Build (func ([]byte ) {}, lolhtml .NewDefaultConfig ())
298- r .Free ()
299- rb .Free ()
300- s .Free ()
301- }
302- })
303- b .Run ("BuildMultipleRewriterFromOneBuilder" , func (b * testing.B ) {
304- rb := lolhtml .NewRewriterBuilder ()
305- s , _ := lolhtml .NewSelector ("*" )
306- rb .AddElementContentHandlers (
307- s ,
308- func (e * lolhtml.Element ) lolhtml.RewriterDirective { return lolhtml .Continue },
309- nil ,
310- nil ,
311- )
312- b .ResetTimer ()
313- for i := 0 ; i < b .N ; i ++ {
314- _ , _ = rb .Build (func ([]byte ) {}, lolhtml .NewDefaultConfig ())
315- //r.Free() // TODO: fix
316- }
317- b .StopTimer ()
318- rb .Free ()
319- s .Free ()
320- })
321- b .Run ("Writer" , func (b * testing.B ) {
322- for i := 0 ; i < b .N ; i ++ {
323- r , _ := lolhtml .NewWriter (
324- nil ,
325- & lolhtml.Handlers {
326- ElementContentHandler : []lolhtml.ElementContentHandler {
327- {
328- Selector : "*" ,
329- ElementHandler : func (e * lolhtml.Element ) lolhtml.RewriterDirective {
330- return lolhtml .Continue
331- },
332- },
333- },
334- },
335- )
336- r .Free ()
337- }
338- })
339- }
0 commit comments