用于计算Java代码的大O时间复杂度的工具?

are*_*tai 14 java algorithm big-o time-complexity

我有一个关于Java软件的时间复杂度(大O表示法)的问题.有没有办法快速计算或测试它(或任何可以为我计算它的网站将受到欢迎).例如,我想检查以下代码片段,并可能改进:

int dcount = 24423567;
        int a = 0;
        if (dcount == 0){
            a = 1;
        }

        String ds = Integer.toString(dcount);
        String[] sa = ds.split("(?<=.)");
        HashSet hs = new HashSet();
        Collections.addAll(hs, sa);
        a = hs.size();
        if (dcount < 0)
            a--;

        System.out.println(a);
Run Code Online (Sandbox Code Playgroud)

tem*_*def 15

正如@emory指出的那样,自动确定任意一段代码的大O时间复杂度是不可能的(证明是停止问题的减少).但是,有些工具可以尝试通过在几个不同的输入上运行来测量代码片段的复杂性.在Goldsmith,Aiken和Wilkerson的论文"Measuring Empirical Computational Complexity"中描述了一种这样的工具.它的工作原理是尝试对程序的运行时与其输入大小进行回归.该工具名为trend-prof,可在线获取.

希望这可以帮助!