时间:2021-07-01 10:21:17 帮助过:41人阅读
语言之争由来已久,下面做一些IO实验(遍历9G多的文件,批量删除),尽量用事实来比较谁优谁劣。操作系统:win7 64 位,文件包大小:9.68G。
一、语言:C#
开发环境:vs 2013
代码总行数:43行
耗时:7秒
代码:
- 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秒
代码:
- #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秒
代码:
- <?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秒
代码:
- 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秒
代码:
- # -*- 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:
- print("该目录不存在!");
- # 计时结束
- print("结束计时:",datetime.datetime.now().strftime('%H:%M:%S'));
运行效果图: