| // Copyright (c) 2021, 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. |
| |
| // Micro-benchmark for creating TypeData lists from Pointers. |
| // |
| // The FfiMemory benchmark tests accessing memory through TypedData. |
| |
| // @dart=2.9 |
| |
| import 'dart:ffi'; |
| |
| import 'package:benchmark_harness/benchmark_harness.dart'; |
| import 'package:ffi/ffi.dart'; |
| |
| // |
| // Benchmark fixture. |
| // |
| |
| // Number of repeats: 1000 |
| const N = 1000; |
| |
| class FromPointerInt8 extends BenchmarkBase { |
| Pointer<Int8> pointer = nullptr; |
| FromPointerInt8() : super('FfiAsTypedList.FromPointerInt8'); |
| |
| @override |
| void setup() => pointer = calloc(1); |
| @override |
| void teardown() => calloc.free(pointer); |
| |
| @override |
| void run() { |
| for (var i = 0; i < N; i++) { |
| pointer.asTypedList(1); |
| } |
| } |
| } |
| |
| // |
| // Main driver. |
| // |
| |
| void main() { |
| final benchmarks = [ |
| () => FromPointerInt8(), |
| ]; |
| for (final benchmark in benchmarks) { |
| benchmark().report(); |
| } |
| } |