Skip to content

JMH Benchmark and passing java String to JExtracted Swift #203

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Dec 17, 2024

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