随机生成字符串的代码:
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的在字符串的运行效率比较低