gpt4 book ai didi

java - java 中的 AES 性能

转载 作者:行者123 更新时间:2023-12-02 06:57:42 25 4
gpt4 key购买 nike

为什么第一次加密调用的时间是第二次的一百倍

byte[] key = //... secret sequence of bytes
byte[] dataToSend = ...

这是我的加密方法:

public static byte[] enc(byte data[], byte key[]
{
Cipher c = Cipher.getInstance("AES");
SecretKeySpec k =
new SecretKeySpec(key, "AES");
c.init(Cipher.ENCRYPT_MODE, k);
byte[] encryptedData = c.doFinal(dataToSend);
return encryptedData;
}

这是测试代码

byte [] key="1111111111111111".toByteArray();
byte [] data=new byte [32];
for(int i=0;i<1000;i++)
{
long x=System.nanoTime();
enc(data,key);
System.out.println(System.nanoTime()-x);

}

第一个值类似于 20300,那么另一个值将下降到 50 , 35 , 42 ..etc如果需要加载某些内容,我可以在启动应用程序之前执行此操作。我正在研究网络协议(protocol),需要与另一个协议(protocol)进行基准测试。

最佳答案

The first value will be something like 20300, then the other value will drop to 50 , 35 , 42

在进行基准测试时,需要考虑后台执行环境的一些影响,例如

  • 缓存效果(CPU 级别和运行时库级别)
  • 预热效果 - 特别是对于 Java,JIT 编译器不一定在第一次执行时将所有字节码编译为 native 代码,而是仅在多次执行相同代码时才将其编译为 native 代码。

一般来说,在开始基准测试之前,您需要多次执行代码,以便这些影响不会影响实际的测量结果。

另请参阅

关于java - java 中的 AES 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17103021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com