Java 在什么情况下,编写、维护以及最重要的是,函数的开销会成为重复代码的可行替代方案?

Java 在什么情况下,编写、维护以及最重要的是,函数的开销会成为重复代码的可行替代方案?,java,function,optimization,Java,Function,Optimization,我一直在想这个问题,今天我想提出这个问题 示例代码: private void createLinks(int numUsers) { for (int i = 1; i <= numUsers; i++) { String userId = "ID-" + i; String randomId; // Generate an ID to link to. do { randomId = "ID-" + random.nextInt(i);

我一直在想这个问题,今天我想提出这个问题

示例代码:

private void createLinks(int numUsers) {
for (int i = 1; i <= numUsers; i++) {
    String userId = "ID-" + i;
    String randomId;
    // Generate an ID to link to.
    do {
        randomId = "ID-" + random.nextInt(i);
    } while (randomId.equals(iUserId));
    link(userId, randomId); //links the first argument to the second, 
                            //links are not bi-directional.

    // Generate 4 more ID's to link to.
    for (int j = 1; j <= 4; j++) {
        do {
            randomId = "ID-" + random.nextInt(i);
        } while (randomId.equals(iUserId));
        link(userId, randomId);
        link(randomId, userId);
    }

    // Generate another ID to link 
    do {
        randomId = "ID-" + random.nextInt(i);
    } while (randomId.equals(iUserId));
    link(randomId, userId)
  }
}
private void createLinks(整数){

对于(inti=1;i这绝对是一个基于观点的问题,我希望它会被关闭。但我还是会尝试回答它,因为它是一个经常被问到的问题

如果你想要一个简单的答案——不用担心。这可能太早了。真的,你问问题的方式告诉我,你缺乏关于调用此代码的频率和速度的信息。这没关系。我们都面临着这种情况,因为在开发环境中有很多未知因素诀窍是——在操作环境中(当您的代码实际运行时),这些未知的将成为已知的。您将得到有关性能问题的反馈(如果有)。应该说,获得这些反馈本身并不是一项简单的任务,需要一些技能和成熟的工具链。但这不是您要问的问题

我是否主张在开发过程中跳过任何性能优化?当然不是,这很愚蠢。有些问题可以而且应该尽早解决。我只是建议遵循简单明了的原则:

如果你有疑问,等待现实告诉你正确的方法

这一原则可能会被误用。但我希望你明白我的观点——过早优化是万恶之源,对吧?

我的自以为是的答案是“永远”。每当我发现自己写了两次相同的代码,我就把它变成一个函数


这种做法不再是基于观点的,因为两段代码做完全相同的事情对程序的正确运行很重要。

我不担心用任何语言调用函数的实现性能,除非被确定为瓶颈,这是非常罕见的,内联或不是。重要的是整体性能,现代CPU速度非常快。600次调用在这里是无关紧要的,尤其是与整体工作相关的调用。回答得好。我将做一些分析,并自己找出答案。