语言之争由来已久,下面做一些IO实验(遍历9G多的文件,批量删除),尽量用事实来比较谁优谁劣。操作系统:win7 64 位,文件包大小:9.68G。
一、语言:C#
开发环境:vs 2013
代码总行数:43行
耗时:7秒
代码:
1
|
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BatchDelete { class Program { static void Main( string [] args) { // 输入目录 e:\tmp string path; Console.WriteLine( "输入要清理的目录:" ); path = Console.ReadLine(); // 开始计时 Console.WriteLine( "开始计时:" +DateTime.Now.ToString( "HH:mm:ss" )); // 先遍历匹配查找再循环删除 if (Directory.Exists(path)) { Console.Write( "正在删除" ); foreach ( string fileName in Directory.GetFileSystemEntries(path)) { if (File.Exists(fileName) && fileName.Contains( "cachegrind.out" )) { File.Delete(fileName); } } Console.WriteLine( "" ); } else { Console.WriteLine( "该目录不存在!" ); } // 计时结束 Console.WriteLine( "结束计时:" + DateTime.Now.ToString( "HH:mm:ss" )); Console.ReadKey(); } } } |
运行效果图:
二、语言:C/C++
开发环境:vs 2013
代码总行数:50行
耗时:36秒
代码:
1
|
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#include <iostream> #include <string> #include <Windows.h> #include <boost\filesystem\operations.hpp> #include <boost\filesystem\path.hpp> #include <boost\filesystem\convenience.hpp> #include <boost\algorithm\string.hpp> using namespace std; int main( int argc, char * argv[]) { // 输入目录 e:\tmp string strPath; cout << "输入要清理的目录:" << endl; getline(cin, strPath); // 开始计时 SYSTEMTIME sys_time; //声明变量 GetLocalTime(&sys_time); //将变量值设置为本地时间 printf ( "开始计时:%02d:%02d:%02d\n" , sys_time.wHour,sys_time.wMinute,sys_time.wSecond); // 先遍历匹配查找再循环删除 namespace fs = boost::filesystem; fs::path full_path(fs::initial_path()); full_path = fs::system_complete(fs::path(strPath, fs::native)); if (fs::exists(full_path)) { cout << "正在删除" ; fs::directory_iterator item_begin(full_path); fs::directory_iterator item_end; for (; item_begin != item_end; item_begin++) { if (!fs::is_directory(*item_begin)) { if (fs::exists(item_begin->path()) && boost::contains(item_begin->path().string(), "cachegrind.out" )) { fs:: remove (item_begin->path()); } } } cout << "" << endl; } else { cout << "该目录不存在!" << endl; } // 计时结束 GetLocalTime(&sys_time); printf ( "计时结束:%02d:%02d:%02d\n" , sys_time.wHour, sys_time.wMinute, sys_time.wSecond); system ( "pause" ); return 0; } |
运行效果图:
三、语言:PHP
开发环境:Phpstorm
代码总行数:32行
耗时:13秒
代码:
1
|
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
<?php /** * Created by PhpStorm. * User: Administrator * Date: 16-1-29 * Time: 上午9:31 */ date_default_timezone_set( 'prc' ); //输入目录 e:\tmp $path = 'e:\tmp' ; //开始计时 echo date ( "H:i:s" ,time()) . '<br/>' ; //先遍历匹配查找再循环删除 if ( is_dir ( $path )) { echo "正在删除" ; $mydir = dir( $path ); while ( $file = $mydir ->read()) { if ( file_exists ( "$path/$file" ) && strpos ( $file , 'cachegrind.out' ) === 0) { unlink( "$path/$file" ); } } echo '<br/>' ; } else { echo "该目录不存在!" . '<br/>' ; } //计时结束 echo date ( "H:i:s" ,time()) . '<br/>' ; |
运行效果图:
四、语言:Java
开发环境:eclipse
代码总行数:43行
耗时:10秒
代码:
1
|
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package com.yejing; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner s = new Scanner(System.in); // 输入目录 e:\tmp String path = null ; System.out.println( "输入要清理的目录:" ); path = s.next(); // 开始计时 Date nowTime= new Date(); SimpleDateFormat time= new SimpleDateFormat( "HH:mm:ss" ); System.out.println( "开始计时:" + time.format(nowTime)); // 先遍历匹配查找再循环删除 File dir = new File(path); if (dir.exists()){ System.out.print( "正在删除" ); File[] fs = dir.listFiles(); for ( int i= 0 ;i<fs.length;i++){ if (!fs[i].isDirectory()){ if (fs[i].isFile() && fs[i].exists() && fs[i].getName().contains( "cachegrind.out" )) { fs[i].delete(); } } } System.out.println( "" ); } else { System.out.println( "该目录不存在!" ); } // 计时结束 nowTime= new Date(); System.out.println( "开始计时:" + time.format(nowTime)); } } |
运行效果图:
五、语言:Python 3.3.5
开发环境:IDLE
代码总行数:20行
耗时:10秒
代码:
1
|
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# -*- coding: utf-8 -*- import datetime import os # 输入目录 e:\tmp path = input ( "输入要清理的目录:\n" ); # 开始计时 print ( "开始计时:" ,datetime.datetime.now().strftime( '%H:%M:%S' )); # 先遍历匹配查找再循环删除 if (os.path.exists(path)): print ( "正在删除" ); for parent,dirnames,filenames in os.walk(path): for filename in filenames: targetFile = os.path.join(parent,filename) if (os.path.isfile(targetFile) and "cachegrind.out" in targetFile): os.remove(targetFile) |
else:
1
|
2
3
|
print ( "该目录不存在!" ); # 计时结束 print ( "结束计时:" ,datetime.datetime.now().strftime( '%H:%M:%S' )); |
运行效果图: