Skip to content

Conversation

@ktoso
Copy link
Collaborator

@ktoso ktoso commented Dec 16, 2024

./gradlew jmh -PjmhIncludes="StringPassingBenchmark"

We can now import and call Swift methods like these:

public func globalWriteString(string: String) -> Int

Which shows up as:

public static long globalWriteString(java.lang.String string)

As a quick check on my M1 macbook pro:

Benchmark                                      (stringLen)  Mode  Cnt     Score     Error  Units
JavaToSwiftBenchmark.getInt_global_jni                 N/A  avgt   10   415.097 ±   1.747  ns/op
JavaToSwiftBenchmark.getInt_member_ffi                 N/A  avgt   10    28.762 ±   3.204  ns/op
JavaToSwiftBenchmark.jextract_getInt_ffm               N/A  avgt   10     4.019 ±   1.693  ns/op
StringPassingBenchmark.writeString_baseline              5  avgt   20     0.852 ±   0.019  ns/op
StringPassingBenchmark.writeString_baseline             10  avgt   20     0.864 ±   0.040  ns/op
StringPassingBenchmark.writeString_baseline            100  avgt   20     0.854 ±   0.025  ns/op
StringPassingBenchmark.writeString_baseline            200  avgt   20     0.881 ±   0.019  ns/op
StringPassingBenchmark.writeString_global_fmm            5  avgt   20    69.695 ±   5.692  ns/op
StringPassingBenchmark.writeString_global_fmm           10  avgt   20    71.264 ±   7.830  ns/op
StringPassingBenchmark.writeString_global_fmm          100  avgt   20   262.935 ±   6.474  ns/op
StringPassingBenchmark.writeString_global_fmm          200  avgt   20   393.893 ±   2.259  ns/op
StringPassingBenchmark.writeString_global_jni            5  avgt   20   738.137 ±  46.046  ns/op
StringPassingBenchmark.writeString_global_jni           10  avgt   20   744.462 ±  53.125  ns/op
StringPassingBenchmark.writeString_global_jni          100  avgt   20  1001.133 ±  40.182  ns/op
StringPassingBenchmark.writeString_global_jni          200  avgt   20  1246.412 ± 101.190  ns/op

I did not manage to get the _jni version to link properly yet but will do that next.

@ktoso ktoso force-pushed the wip-string-benchmarking-and-passing branch from 2106825 to 9294d31 Compare December 16, 2024 08:34
add benchmarks for String -> Swift and returning a count
@ktoso ktoso force-pushed the wip-string-benchmarking-and-passing branch from 9294d31 to f61a5d2 Compare December 17, 2024 05:47
@ktoso ktoso merged commit 84587b4 into swiftlang:main Dec 17, 2024
12 checks passed
@ktoso ktoso deleted the wip-string-benchmarking-and-passing branch December 17, 2024 09:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant