blob: f9a8ae785a6ac92fcf971e48f478d494d543f77e [file] [log] [blame]
// 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';
final class Struct1Bytes extends Struct {
@Array(1)
external Array<Uint8> a0;
}
final class Struct1BytesWrapper extends Struct {
external Struct1Bytes nested;
}
final class Copy1Bytes extends StructCopyBenchmark {
@override
Pointer<Struct1BytesWrapper> from = nullptr;
@override
Pointer<Struct1BytesWrapper> to = nullptr;
Copy1Bytes() : super('FfiStructCopy.Copy1Bytes');
@override
int get copySizeInBytes => sizeOf<Struct1BytesWrapper>();
@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;
}
}
}
final class Struct32Bytes extends Struct {
@Array(32)
external Array<Uint8> a0;
}
final class Struct32BytesWrapper extends Struct {
external Struct32Bytes nested;
}
final class Copy32Bytes extends StructCopyBenchmark {
@override
Pointer<Struct32BytesWrapper> from = nullptr;
@override
Pointer<Struct32BytesWrapper> to = nullptr;
Copy32Bytes() : super('FfiStructCopy.Copy32Bytes');
@override
int get copySizeInBytes => sizeOf<Struct32BytesWrapper>();
@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;
}
}
}
final class Struct1024Bytes extends Struct {
@Array(1024)
external Array<Uint8> a0;
}
final class Struct1024BytesWrapper extends Struct {
external Struct1024Bytes nested;
}
final class Copy1024Bytes extends StructCopyBenchmark {
@override
Pointer<Struct1024BytesWrapper> from = nullptr;
@override
Pointer<Struct1024BytesWrapper> to = nullptr;
Copy1024Bytes() : super('FfiStructCopy.Copy1024Bytes');
@override
int get copySizeInBytes => sizeOf<Struct1024BytesWrapper>();
@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;
}
}
}
final class Struct32768Bytes extends Struct {
@Array(32768)
external Array<Uint8> a0;
}
final class Struct32768BytesWrapper extends Struct {
external Struct32768Bytes nested;
}
final class Copy32768Bytes extends StructCopyBenchmark {
@override
Pointer<Struct32768BytesWrapper> from = nullptr;
@override
Pointer<Struct32768BytesWrapper> to = nullptr;
Copy32768Bytes() : super('FfiStructCopy.Copy32768Bytes');
@override
int get copySizeInBytes => sizeOf<Struct32768BytesWrapper>();
@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;
}
}
}