各種語言split函數的運行時間(java,python,matlab)

隨機生成字符串的代碼: 

from random import choice
import string

def GenString(length=100000, chars=string.ascii_letters + string.digits + ' '):
    return ''.join([choice(chars) for i in range(length)])

if __name__ == "__main__":
    f = open('s.txt', 'w')
    f.write(GenString(int(1e7)))

python 3.5

import datetime
import re

f = open('s.txt', 'r')
s = f.read()
f.close()

starttime = datetime.datetime.now()
res = s.split(' ')
endtime = datetime.datetime.now()
print((endtime - starttime).microseconds)

starttime = datetime.datetime.now()
res2 = re.split(' ', s)
endtime = datetime.datetime.now()
print((endtime - starttime).microseconds)

運行3次結果:

matlab 2018a

f = fopen('s.txt','r');
s = fgetl(f);
fclose(f);
tic
S1 = split(s, " ");
toc
tic
S2 = strsplit(s, " ");
toc
tic
S3 = regexp(s, " ", 'split');
toc

運行3次結果:

Java (jdk-1.8)

 

import java.io.BufferedReader;
import java.io.FileReader;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;

public class Main6 {
	public static void main(String[] args) throws Exception{
            FileReader reader = new FileReader("D:\\workspace\\Main\\s.txt");
            BufferedReader br = new BufferedReader(reader);  
            String line = br.readLine();
            LocalDateTime fromDate= LocalDateTime.now();
            String[] strs = line.split(" ");
            LocalDateTime toDate= LocalDateTime.now();
            long microseconds = ChronoUnit.MICROS.between(fromDate, toDate);
            System.out.println(microseconds);
            br.close();
            reader.close();
	}
}

運行3次結果:

從結果可知,運行時間 Matlab 大於 Java 略大於 Python,這說明Matlab的在字符串的運行效率比較低

發佈了40 篇原創文章 · 獲贊 8 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章