0768228750
Change-Id: I4f8e695ac648becc0de3466b6ba2058cbae7c408 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/422103 Commit-Queue: Bob Nystrom <rnystrom@google.com> Reviewed-by: Bob Nystrom <rnystrom@google.com> Auto-Submit: Daco Harkes <dacoharkes@google.com> Commit-Queue: Daco Harkes <dacoharkes@google.com>
68 lines
1.6 KiB
Dart
68 lines
1.6 KiB
Dart
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
|
|
// for details. 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:io';
|
|
|
|
Future<void> main() async {
|
|
final contents = [
|
|
header,
|
|
for (final size in sizes) generateSize(size),
|
|
].join('\n');
|
|
|
|
final uri = Platform.script.resolve('dart/benchmark_generated.dart');
|
|
|
|
await File.fromUri(uri).writeAsString(contents);
|
|
}
|
|
|
|
const sizes = [1, 32, 1024, 1024 * 32];
|
|
|
|
const header =
|
|
'''// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
|
|
// for details. 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:ffi';
|
|
|
|
import 'package:ffi/ffi.dart';
|
|
|
|
import 'FfiStructCopy.dart';
|
|
''';
|
|
|
|
String generateSize(int size) =>
|
|
'''
|
|
final class Struct${size}Bytes extends Struct {
|
|
@Array($size)
|
|
external Array<Uint8> a0;
|
|
}
|
|
|
|
final class Struct${size}BytesWrapper extends Struct {
|
|
external Struct${size}Bytes nested;
|
|
}
|
|
|
|
final class Copy${size}Bytes extends StructCopyBenchmark {
|
|
@override
|
|
Pointer<Struct${size}BytesWrapper> from = nullptr;
|
|
@override
|
|
Pointer<Struct${size}BytesWrapper> to = nullptr;
|
|
|
|
Copy${size}Bytes() : super('FfiStructCopy.Copy${size}Bytes');
|
|
|
|
@override
|
|
int get copySizeInBytes => sizeOf<Struct${size}BytesWrapper>();
|
|
|
|
@override
|
|
void setup(int batchSize) {
|
|
from = calloc(batchSize);
|
|
to = calloc(batchSize);
|
|
}
|
|
|
|
@override
|
|
void run(int batchSize) {
|
|
for (int i = 0; i < batchSize; i++) {
|
|
to[i].nested = from[i].nested;
|
|
}
|
|
}
|
|
}
|
|
''';
|