66 lines
2.1 KiB
Dart
66 lines
2.1 KiB
Dart
// Copyright 2014 The Flutter Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
import 'dart:ui';
|
|
|
|
import 'recorder.dart';
|
|
|
|
int _counter = 0;
|
|
|
|
Paragraph _generateParagraph() {
|
|
final ParagraphBuilder builder =
|
|
ParagraphBuilder(ParagraphStyle(fontFamily: 'sans-serif'))
|
|
..pushStyle(TextStyle(fontSize: 12.0))
|
|
..addText(
|
|
'$_counter Lorem ipsum dolor sit amet, consectetur adipiscing elit, '
|
|
'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
|
|
);
|
|
_counter++;
|
|
return builder.build();
|
|
}
|
|
|
|
/// Repeatedly lays out a paragraph using the DOM measurement approach.
|
|
///
|
|
/// Creates a different paragraph each time in order to avoid hitting the cache.
|
|
class BenchTextDomLayout extends RawRecorder {
|
|
BenchTextDomLayout() : super(name: benchmarkName);
|
|
|
|
static const String benchmarkName = 'text_dom_layout';
|
|
|
|
@override
|
|
void body(Profile profile) {
|
|
final Paragraph paragraph = _generateParagraph();
|
|
profile.record('layout', () {
|
|
paragraph.layout(const ParagraphConstraints(width: double.infinity));
|
|
});
|
|
}
|
|
}
|
|
|
|
/// Repeatedly lays out a paragraph using the DOM measurement approach.
|
|
///
|
|
/// Uses the same paragraph content to make sure we hit the cache. It doesn't
|
|
/// use the same paragraph instance because the layout method will shortcircuit
|
|
/// in that case.
|
|
class BenchTextDomCachedLayout extends RawRecorder {
|
|
BenchTextDomCachedLayout() : super(name: benchmarkName);
|
|
|
|
static const String benchmarkName = 'text_dom_cached_layout';
|
|
|
|
final ParagraphBuilder builder =
|
|
ParagraphBuilder(ParagraphStyle(fontFamily: 'sans-serif'))
|
|
..pushStyle(TextStyle(fontSize: 12.0))
|
|
..addText(
|
|
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, '
|
|
'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
|
|
);
|
|
|
|
@override
|
|
void body(Profile profile) {
|
|
final Paragraph paragraph = builder.build();
|
|
profile.record('layout', () {
|
|
paragraph.layout(const ParagraphConstraints(width: double.infinity));
|
|
});
|
|
}
|
|
}
|