主要功能就是读取文件然后字节操作 直接把字节传递给C++ C++再返回处理后的字节
public static native byte[] decrypt(byte[] fileData) throws RuntimeException;
测试运行耗时用的就是最简单的System.currentTimeMillis
long start = System.currentTimeMillis();
byte[] decrypt = KgmDecrypt.decrypt(bytes);
long end = System.currentTimeMillis();
System.out.println("耗时:" + (end - start) + " ms");
耗时大概是700-800ms
然后相同的算法用Java实现
怎么可能??? C++比Java慢了3倍 jni和java交互也不至于用了2/3时间吧
然后问了一下AI 原因竟然是
没开优化!!!
CMake项目 查看确实是用的Debug模式 切换到Release模式试试
比Java还快一倍 debug和release竟然差了这么多
PS: 高版本JDK没有javah了 生成jni头文件要用javac -h