Java 如何估计授权时间

Java 如何估计授权时间,java,performance,computation,Java,Performance,Computation,我使用java设计了一个身份验证协议。在我的台式计算机上执行单一身份验证的平均时间为2.87毫秒。我的计算机具有以下规格。具有1.99 GHz Intel Core i7和8GB RAM的Windows 10 如果多个用户同时表示10个用户同时执行身份验证。总计算时间是多少。我能说(2.87*10)吗 你不能说时间会乘以用户数量 首先,这意味着您的身份验证机制只能在1个线程上工作,这将非常糟糕 那么,在您的计算机上注册的时间在生产或登台环境中肯定会有所不同。您必须添加网络跃点,但在其他端服务器上

我使用java设计了一个身份验证协议。在我的台式计算机上执行单一身份验证的平均时间为2.87毫秒。我的计算机具有以下规格。具有1.99 GHz Intel Core i7和8GB RAM的Windows 10


如果多个用户同时表示10个用户同时执行身份验证。总计算时间是多少。我能说(2.87*10)吗

你不能说时间会乘以用户数量

首先,这意味着您的身份验证机制只能在1个线程上工作,这将非常糟糕

那么,在您的计算机上注册的时间在生产或登台环境中肯定会有所不同。您必须添加网络跃点,但在其他端服务器上只能添加网络跃点,但您无法将此时间与您个人计算机上的时间进行比较

如果您想测试这类东西,请使用性能/负载测试工具。我可以从Apache基金会推荐开源工具,或者另一个开源工具。p> 它们被设计用于这样的用例。有了它们,你可以调用你的身份验证API,例如10秒内有100个用户,最后你会看到报告,它会给出你的答案。

一个典型的应用程序有4到8个内核,可以并行执行6到12个线程(#内核乘以超线程)

假定

  • 您有一个i7-8650U(1.9GHz,4核,超线程)
  • 您的Java服务器是多线程的(如果您使用任何流行的实现,如Tomcat、Jetty或类似的实现,应该是这种情况),并且
  • 没有其他CPU密集型工作负载在运行
您可以说,您的服务器可以同时处理8个身份验证请求:4个全速处理+4个超线程以约30%的速度处理,或者每8个用户处理2.87ms*1.3=3.73ms

因此,10个用户大约需要3.73ms+2.87ms=6.6ms


然而,在测量Java性能时,重要的是测量负载下的稳态,以便考虑垃圾收集开销。在测量单个请求时,您可能经常完全错过垃圾收集步骤。

乘以10?做一个循环?用那个信息回答是不可能的。我们甚至不知道到底发生了什么,以及这种情况是如何发展的。根据代码的功能,代码也可以是二次的,而不是线性的,或者只是常数。在这种情况下,时间甚至可能爆炸。任何事情都可能发生,我们无法猜测。除非是您的服务器(或您的工作是代表他人这样做),否则请不要继续通过自动化请求来产生负载,有些服务器可能会将您列入黑名单。我设计了一个protocl来执行身份验证,我使用java设计了protocl。在我的桌面上,单次身份验证的计算时间约为2.78毫秒。如果多个用户(10个用户)尝试同时进行身份验证,我是否可以判断会发生什么情况(我可以将2.78乘以10)@扎布扎只能重复我说的话,没有细节和代码我们是不可能说的。您的假设仅适用于时间恒定且不随负载线性或二次缩放(例如)的情况。