小编Mar*_*ark的帖子

JVM何时使用内在函数

为什么在JVM内部类中存在的某些代码模式被转换为内部函数,而从我自己的类调用时相同的模式则不然.

例:

bitCount函数,当从Integer.bitCount(i)内调用时,将变成一个内在函数.但是当复制到我的类中然后调用将需要更长的时间来执行.

相比

Integer.bitCount(i) 
MyClass.bitCount(i) 


public static int bitCount(int i) {
    // HD, Figure 5-2
    i = i - ((i >>> 1) & 0x55555555);
    i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
    i = (i + (i >>> 4)) & 0x0f0f0f0f;
    i = i + (i >>> 8);
    i = i + (i >>> 16);
    return i & 0x3f;
}
Run Code Online (Sandbox Code Playgroud)

java performance jvm intrinsics

21
推荐指数
2
解决办法
6121
查看次数

如何使用Erlang OTP管理程序行为重启具有自定义状态的子项?

我正在使用OTP管理程序行为来监督和重新启动子进程.然而,当孩子死亡时,我想以崩溃前的状态重新启动它.

如果我自己编写自定义主管,我可以收到{EXIT,Pid,Reason}消息并对其进行操作.当使用OTP管理程序行为时,它全部由OTP管理,我无法控制它.我实现的唯一回调函数是init.

在这种情况下是否有任何标准方法?如何自定义otp主管动态重启的子状态?如何使用OTP获取终止进程的Pid?或者也许可以在终止之前获得孩子的状态,然后将孩子恢复到崩溃之前的状态?

erlang erlang-otp

9
推荐指数
1
解决办法
1580
查看次数

重启erlang进程并保持状态

我有一个监督程序进程,启动子进程的数量.目前,当孩子死亡时,我会用新的Pid产生一个新的过程.这意味着我丢失了刚刚去世的子进程的状态信息.我希望我的客户端使用始终相同的标识符与子进程通信.尽管儿童过程可能会死亡并由主管重新启动.

我正在考虑使用唯一名称注册子进程并将子状态存储在ets表中.问题是 - 在Erlang中推荐这种问题的方法是什么?

谢谢!

erlang

8
推荐指数
2
解决办法
2760
查看次数

为什么分支预测相当准确?

为什么分支预测准确?我们是否可以从较高的层面来思考代码的某些分支如何在 99% 的时间内执行,而其余的则是特殊情况和异常处理?

我的问题有点模糊,但我只对这个问题的高层观点感兴趣。让我举一个例子

假设你有一个带有参数的函数

void execute(Input param) { 
  assertNotEmpty(param)
  (...)
}
Run Code Online (Sandbox Code Playgroud)

我有条件地执行我的函数,给定的参数不为空。99% 的情况下这个参数确实是非空的。那么我是否可以考虑基于神经网络的分支预测,例如,在某种程度上,由于它已经无数次看到这样的指令流(这样的断言很常见),它会简单地了解到大多数时候该参数非空并且相应地采取分支?

那么我们是否可以从以下角度来思考我们的代码:代码越干净,越可预测,甚至更常见,我们就越容易使用分支预测器?

谢谢!

cpu cpu-architecture branch-prediction

3
推荐指数
1
解决办法
2482
查看次数