语言之争由来已久,下面做一些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' ));
|
运行效果图: