对erlang的置疑ITeye - 凯时娱乐

对erlang的置疑ITeye

2019年02月26日12时11分17秒 | 作者: 景逸 | 标签: 成果,代码,字符串 | 浏览: 988

create_random_word(Acl,N)- create_random_word([97+ trunc(random:uniform()*26) |Acl],N+1).

 

编译:

 erlc test_dict.erl

履行:

  timer:tc(test_dict,just_create_words,[10000000]).

履行成果

   {29546820,ok} 29.5秒

 

成果比照:

    看见了吧 java履行只需求1.8秒,而erlang需求29.5秒,假如说相差个1秒那还说得过去,为啥相差这么多?莫非我写的代码有问题?

 

    测验二是在上测验1的基础上,将创建出的随机字符串put到map目标中他,map目标的value是一个Integer值,当map目标中假如已经有一个相同的key的话就将对应key的value值加一。

 仍是创将1000万个5个字符串的随机字符串,别离计算履行时间。

以下是java代码:

public class TestDict {
 public static void main(String[] args) {
 Map String, AtomicInteger wordCount = new HashMap String, AtomicInteger 
 final long current = System.currentTimeMillis();
 String key = null;
 AtomicInteger value = null;
 for (int i = 0; i 10000000; i++) {
 key = createRandomWord();
 value = wordCount.get(key);
 if (value  null) {
 wordCount.put(key, new AtomicInteger(1));
 } else {
 wordCount.get(key).incrementAndGet();
 System.out.println("consume:" + (System.currentTimeMillis() - current));
 System.out.println("key size:" + wordCount.size());
 private static String createRandomWord() {
 char[] chars = new char[5];
 for (int i = 0; i chars.length; i++) {
 chars[i] = (char) (97 + (int) (Math.random() * 26));
 return new String(chars);
}

 编译:

javac  TestDict.java

履行:

java TestDict

履行成果:

consume:13698
key size:6759849

 

Erlang代码:

-module(test_dict).
-compile(export_all).
test_create_word(Dict,0)- 
test_create_word(Dict,N)- 
 dict:update_counter(create_random_word(),1,Dict),
 test_create_word(Dict,N-1).                          
			
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯时娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章