Skip to content

Commit 8b55f17

Browse files
author
huizzzhou
committed
feat: add compare example
1 parent 2d37fdb commit 8b55f17

File tree

4 files changed

+46
-5
lines changed

4 files changed

+46
-5
lines changed

dart_native/android/src/main/jni/dart_native.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ JNIEnv *getEnv() {
5555

5656
switch (ret) {
5757
case JNI_OK:
58-
NSLog("JNI_OK");
5958
return env;
6059
case JNI_EDETACHED:
6160
NSLog("attach to current thread");
@@ -221,7 +220,6 @@ void *invokeNativeMethodNeo(void *classPtr, char *methodName, void **args, char
221220
}
222221
char *methodSignature = spliceChar(signature, returnType);
223222
jmethodID method = getEnv()->GetMethodID(cls, methodName, methodSignature);
224-
NSLog("call method: %s descriptor: %s", methodName, methodSignature);
225223

226224
if (strlen(returnType) > 1) {
227225
if (strcmp(returnType, "Ljava/lang/String;") == 0) {

dart_native/example/android/app/src/main/java/com/dartnative/dart_native_example/MainActivity.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,15 @@
66
import io.flutter.Log;
77
import io.flutter.embedding.android.FlutterActivity;
88
import io.flutter.embedding.engine.FlutterEngine;
9+
import io.flutter.plugin.common.MethodCall;
10+
import io.flutter.plugin.common.MethodChannel;
11+
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
12+
import io.flutter.plugin.common.MethodChannel.Result;
913
import io.flutter.plugins.GeneratedPluginRegistrant;
1014

1115
public class MainActivity extends FlutterActivity {
1216
public static final String TAG = "dart_java";
17+
private final String CHANNEL_NAME = "dart_native.example";
1318

1419
static {
1520
DartNativePlugin.setSoPath("");
@@ -18,6 +23,18 @@ public class MainActivity extends FlutterActivity {
1823
@Override
1924
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
2025
GeneratedPluginRegistrant.registerWith(flutterEngine);
26+
new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL_NAME).setMethodCallHandler(new MethodCallHandler() {
27+
@Override
28+
public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
29+
if ("channelInt".equals(call.method)) {
30+
result.success(100);
31+
} else if ("channelString".equals(call.method)) {
32+
result.success("test success");
33+
} else {
34+
result.notImplemented();
35+
}
36+
}
37+
});
2138
}
2239

2340
public int getInt(int i){

dart_native/example/android/app/src/main/java/com/dartnative/dart_native_example/RuntimeStub.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ public class RuntimeStub {
1313
private final String TAG = "dart_java";
1414

1515
public int getInt(int i){
16-
Log.d(TAG, "getInt : " + i);
1716
return 100;
1817
}
1918

@@ -53,7 +52,6 @@ public boolean getBool(boolean b) {
5352
}
5453

5554
public String getString(String s) {
56-
Log.d(TAG, "getString : " + s);
5755
return "test success";
5856
}
5957

dart_native/example/lib/android/android_new_main.dart

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@ import 'package:dart_native_example/android/unit_test.dart';
33
import 'package:flutter/material.dart';
44
import 'dart:async';
55

6+
import 'package:flutter/services.dart';
7+
68
class AndroidNewApp extends StatefulWidget {
79
@override
810
_AndroidNewApp createState() => _AndroidNewApp();
911
}
1012

1113
class _AndroidNewApp extends State<AndroidNewApp> {
1214
RuntimeStub stub = RuntimeStub();
15+
static const platform = const MethodChannel('dart_native.example');
1316

1417
@override
1518
void initState() {
@@ -19,7 +22,32 @@ class _AndroidNewApp extends State<AndroidNewApp> {
1922

2023
// Platform messages are asynchronous, so we initialize in an async method.
2124
Future<void> initPlatformState() async {
22-
// testAndroid(stub);
25+
// Benchmark
26+
String testString =
27+
'This is a long string: sdlfdksjflksndhiofuu2893873(*(%¥#@)*&……¥撒肥料开发时傅雷家书那份会计师东方丽景三等奖';
28+
int time = DateTime.now().millisecondsSinceEpoch;
29+
for (var i = 0; i < 10000; i++) {
30+
String _ = await platform.invokeMethod('channelString', testString);
31+
}
32+
print(
33+
"Flutter Channel String Cost: ${DateTime.now().millisecondsSinceEpoch - time}");
34+
time = DateTime.now().millisecondsSinceEpoch;
35+
for (var i = 0; i < 10000; i++) {
36+
String _ = stub.getString(testString);
37+
}
38+
print("DartNative String Cost: ${DateTime.now().millisecondsSinceEpoch - time}");
39+
40+
time = DateTime.now().millisecondsSinceEpoch;
41+
for (var i = 0; i < 10000; i++) {
42+
int _ = await platform.invokeMethod('channelInt', testString);
43+
}
44+
print(
45+
"Flutter Channel int Cost: ${DateTime.now().millisecondsSinceEpoch - time}");
46+
time = DateTime.now().millisecondsSinceEpoch;
47+
for (var i = 0; i < 10000; i++) {
48+
int _ = stub.getInt(100);
49+
}
50+
print("DartNative int Cost: ${DateTime.now().millisecondsSinceEpoch - time}");
2351
}
2452

2553
@override

0 commit comments

Comments
 (0)