精华内容
下载资源
问答
  • 复制大量文件时,会出现:刚开始速度很快,可以达到70多M/s,可以是紧提前速度越来越慢,下降到20M/s基本稳定。记得也有一次竟然下降到了6M/s,简直不可思议。据说这是Win7系统的通病,解决办法如下:  控制面板...

    我用的是希捷1T移动硬盘,正品。复制大量文件时,会出现:刚开始速度很快,可以达到70多M/s,可以是紧提前速度越来越慢,下降到20M/s时基本稳定。记得也有一次竟然下降到了6M/s,简直不可思议。据说这是Win7系统的通病,解决办法如下:

          控制面板-程序-程序和功能-打开或关闭windows功能-把最后一项“远程差分压缩”前的对勾去掉,重启电脑。

    展开全文
  • 1.在复制多个文件线程池也有用武之地,多线程复制文件是受io影响的,在设置一定的缓存有一定效果。 2.或者在Linux下有一定效果,但是在windows上使用fopen效果不太明显。有知道的高手请指教。 3.参考qt并发复制...


    场景:

    1.在复制多个文件时线程池也有用武之地,多线程复制文件是受io影响的,在设置一定的缓存时有一定效果。

    2.或者在Linux下有一定效果,但是在windows上使用fopen效果不太明显。有知道的高手请指教。

    3.参考qt并发复制文件,并沿用之前的线程池实现。

    4.商用的话建议可以用boost的 http://sourceforge.net/projects/threadpool/?source=directory,如果是想用c的线程池实现,可以修改我写的。


    Qt的调用实现:

    QList<QString> keys = m_Files.keys();  
        int num_files = keys.count();  
        QFutureSynchronizer<tuple<QString, QString> > sync;  
      
        for (int i = 0; i < num_files; ++i) {  
            QString id = keys.at(i);  
            sync.addFuture(QtConcurrent::run(  
                               this,  
                               &ImportEPUB::LoadOneFile,  
                               m_Files.value(id),  
                               m_FileMimetypes.value(id)));  
        }  
      
        sync.waitForFinished();  

    我自己的实现从效果上其实复制速度还是有下降的。就和在windows上同时复制多个大文件不如先复制一个文件快。

    main.cpp

    /*
     * main.cpp
     *
     *  Created on: 2013-3-13
     *  Author: Sai
     */
    
    #include <stdio.h>
    #include <string.h>
    #include <string>
    #include <iostream>
    #include <io.h>
    using namespace std;
    
    #include "dh_thread_pool.h"
    #include "dh_thread_task.h"
    
    #include "dh_download_manager.h"
    
    typedef struct DiskData
    {
    	FILE* file;
    } DiskData;
    
    size_t WriteToDisk(void *contents, size_t size, size_t nmemb, void *userp)
    {
    	DiskData* dd = (DiskData*) userp;
    	size_t number = nmemb * size;
    	size_t writed_num = fwrite(contents, 1, number, dd->file);
    	return writed_num;
    }
    
    void *RunTaskFunc(void * arg)
    {
    	int* i = (int*) arg;
    	cout << "thread index: " << *i << endl;
    	DhDownloadManager* manager = new DhDownloadManager();
    	static const char* url =
    			"http://www.istonsoft.com/downloads/iston-video-converter.exe";
    
    	DiskData dd;
    	char path[8];
    	memset(path, 0, sizeof(path));
    	sprintf(path, "%d.exe", *i);
    	dd.file = fopen(path, "wb");
    	manager->Process(url, &WriteToDisk, &dd);
    
    	fclose(dd.file);
    	return NULL;
    }
    
    void Download()
    {
    	printf("Hello, world\n");
    	DhThreadPool *pool = new DhThreadPool(5);
    	pool->Activate();
    
    	for (int o = 0; o < 10; ++o)
    	{
    		int *i = new int;
    		*i = o;
    		pool->AddAsynTask(&RunTaskFunc, i);
    	}
    	getchar();
    	pool->Destroy();
    	delete pool;
    }
    
    void CopyOneToAnother(const char* source, const char* dest)
    {
    	FILE* file_r = fopen(source, "rb");
    	FILE* file_w = fopen(dest, "wb");
    
    	char buf[1025];
    	buf[1024] = 0;
    	while (!feof(file_r))
    	{
    		memset(buf, 0, 1024);
    		int readed = fread(buf, 1, 1024, file_r);
    		fwrite(buf, 1, readed, file_w);
    	}
    	fclose(file_r);
    	fclose(file_w);
    }
    
    void CopyFileWithOneThread()
    {
    	double time = clock();
    	static string dir("dist/");
    	static string d_dir("dist/Debug/");
    	for (int i = 1; i < 11; ++i)
    	{
    		char file_name[8];
    		memset(file_name, 0, sizeof(file_name));
    		sprintf(file_name, "%d.bin", i);
    		string path(dir);
    		path.append(file_name);
    		string d_path(d_dir);
    		d_path.append(file_name);
    		CopyOneToAnother(path.c_str(), d_path.c_str());
    	}
    
    	cout << "单线程复制文件 耗时 单位(毫秒): " << clock() - time << endl;
    }
    
    void *CopyFile(void * arg)
    {
    	int* data = (int*) arg;
    	static string dir("dist/");
    	static string d_dir("dist/Debug/");
    
    	char file_name[8];
    	memset(file_name, 0, sizeof(file_name));
    	sprintf(file_name, "%d.bin", *data);
    	string path(dir);
    	path.append(file_name);
    	string d_path(d_dir);
    	d_path.append(file_name);
    	CopyOneToAnother(path.c_str(), d_path.c_str());
    
    	free(data);
    	return NULL;
    }
    
    void CopyFileWithConcurrentThread()
    {
    	double time = clock();
    
    	DhThreadPool *pool = new DhThreadPool(5);
    	pool->SetWaitTime(10);//设置扫描时间是10毫秒
    	for (int o = 1; o < 11; ++o)
    	{
    		int *i = (int*) malloc(sizeof(int));
    		*i = o;
    		pool->AddAsynTask(&CopyFile, i);
    	}
    	pool->Activate();
    	pool->WaitTaskFinishAndDestroy();
    	delete pool;
    
    	cout << "并发复制文件 耗时 单位(毫秒): " << clock() - time << endl;
    }
    
    int IsFileExist(const char* path)
    {
    	return !access(path, F_OK);
    }
    
    int CreateFixSizeFile(const char* file_path, uint64_t file_size)
    {
    	FILE* file = fopen(file_path, "wb");
    	char buffer[1025];
    	memset(buffer, 1, sizeof(buffer));
    	uint64_t size = file_size;
    
    	size_t num = 0;
    	while (size)
    	{
    		num = fwrite(buffer, 1, 1024, file);
    		size = size - num;
    	}
    
    	fclose(file);
    	return 0;
    }
    
    int main(int argc, char *argv[])
    {
    	setbuf(stdout, (char*) NULL);
    	setbuf(stderr, (char*) NULL);
    
    	//1.创建文件
    	string dir("dist/");
    	for (int i = 1; i < 11; ++i)
    	{
    		char file_name[8];
    		memset(file_name, 0, sizeof(file_name));
    		sprintf(file_name, "%d.bin", i);
    		string path(dir);
    		path.append(file_name);
    		if (!IsFileExist(path.c_str()))
    		{
    			CreateFixSizeFile(path.c_str(), 1024 * 1024 * 10 * i);
    		}
    	}
            
            //耗时
    	//41500
    	//42489
    	//41368
    	//1.单个线程复制文件
    //	CopyFileWithOneThread();
            
            //耗时
    	//85396
    	//1.并发复制文件
    	CopyFileWithConcurrentThread();
    
    	return 0;
    }
    
    

    参考线程池: http://blog.csdn.net/infoworld/article/details/8670951


    展开全文
  • 在 Windows 资源管理器中用右键单击一个文件或文件夹性能暂时下降英文 http://support.microsoft.com/default.aspx?scid=kb;en-us;819101中文 http://support.microsoft.com/kb/819101/zh-cn症状在 Windows 资源...
    在 Windows 资源管理器中用右键单击一个文件或文件夹时性能暂时下降
    在 Windows 资源管理器中,当您右键单击一个文件或文件夹时,您可能会遇到下列情况之一:
    在这个时候进行的所有文件复制操作可能会停止响应。
    网络连接速度明显下降。
    所有的流输入/输出操作被降级。例如,Windows Media Player 上的流式音频的质量变得很差。

    原因

    当您在 Windows 资源管理器中右键单击一个文件或文件夹后,在快捷菜单显示时,CPU 的使用达到 100%。在快捷菜单关闭后,CPU 使用恢复到正常水平。

    替代方法

    要解决此问题,请使用以下两种方法之一。

    方法 1

    关闭菜单和工具提示的过渡效果。为此,请按照下列步骤操作:
    1. 单击“开始”,然后单击“控制面板”。
    2. 在“控制面板”中,双击“显示”,然后单击“外观”选项卡。
    3. 在“外观”选项卡上,单击“效果”。
    4. 在“效果”对话框中,单击以清除“为菜单和工具提示使用下列过渡效果”,然后单击“确定”两次。

    方法 2

    单击您需要的文件夹或文件(选中它),然后单击右键以显示快捷菜单。

    状态

    Microsoft 已经确认这是在本文开头列出的 Microsoft 产品中存在的问题。
    展开全文
  • VB快速查找大型文件中包含的字符串

    万次阅读 热门讨论 2009-04-24 11:23:00
    关于查找大型文件中包含的字符串,一般都把文件内容读入到内存,然后在内存里进行比较,却不知这种办法有一个致命的弱点,那就是由于大量的内存申请和释放导致的内存颠簸,会使系统性能下降,严重影响了查找的速度。...

        关于查找大型文件中包含的字符串,一般都把文件内容读入到内存,然后在内存里进行比较,却不知这种办法有一个致命的弱点,那就是由于大量的内存申请和释放导致的内存颠簸,会使系统性能下降,严重影响了查找的速度。特别是在递归中对多个文件进行查找时,这个问题会更加突出,有时甚至会导致VB程序挂掉。为避免这种情况,同时加快大型文件中字符串的查找速度,俺基于内存影射文件和VB模拟指针技术,编写了一个通用字符串查找函数。

        首先,先看一个普通的查找函数:

        用一个400K的文本进行测试,测试次数为20次,测试代码如下:

        根据测试结果,最大耗时为2050ms,最小耗时为890ms,平均在950ms左右。

     

        然后,我看再看一下基于内存影射和模拟指针的查找函数,代码如下:

        这个函数明显比上一个函数复杂得到,按理说,它运行速度肯定相应的要慢一些,咱们先不下定论,还是经过测试后再说吧,测试代码如下:

        调用代码如下:

        使用了同一个文本文件,同样测试了20次,嘿,第二个函数最大耗时为17ms,最小耗时为0ms,平均不超过1ms,这进一步验证了我的设计初衷。

        如果你有更好的思路和建议,恳请告诉俺,俺在此表示感谢了!

    展开全文
  • 文件(大量)的性能问题

    千次阅读 2015-01-10 12:51:11
    在写文件时,操作系统需要向硬盘管理系统发送IO请求,那么多个小文件,就意味着操作系统要向硬盘管理系统发送多次IO请求。随着文件数目上升,多个IO请求耗费的时间逐渐累加,最终甚至可以大于本身写数据所耗费的时间...
  • 然而在Inside君之前的两篇博客中(1,2)中都已经提到了MySQL 5.7版本已经支持“真正”的并行复制功能,官方称为为enhanced multi-threaded slave(简称MTS),因此复制延迟问题已经得到了极的改
  • MySQL 8 复制(一)——异步复制

    千次阅读 多人点赞 2019-05-10 18:25:10
    一、MySQL异步复制介绍 1. 复制的用途 2. 复制如何工作 3. 两阶段提交 二、复制实验环境 三、安装mysql-8.0.16 四、配置异步复制 1. 空库 2. 脱机 3. 联机 一、MySQL异步复制介绍 简单说,复制就是将...
  • 解决移动硬盘复制速度过慢的办法

    万次阅读 2011-03-02 23:04:00
    今天买了一台新电脑,配置较高,但是接上移动硬盘后,发现从移动硬盘向主机拷贝文件速度很慢,经实验,采用了如下步骤后,拷贝速度大为提高:   1、检查驱动器的格式是否一致 2、将移动硬盘的两个接口...
  • 在Node.js中读写大文件

    千次阅读 2016-11-23 20:38:17
    前段时间偶然需要整理一个几...使用fs.readFile()一次性将文件内容全部读取出来,考虑到可能将来会操作几G文件,所以放弃了这种方式;使用fs.createReadStream()创建一个读文件流,这种方式可不受限于文件的大小;
  • 一、组复制性能 1. 概述 2. 测试规划 3. 消息压缩 4. 组通信线程循环 5. 写入集 6. 流控 7. 其它配置 8. 主从、半同步、组复制性能对比测试 二、组复制要求与限制 1. 组复制要求 2. 组复制限制 一、组...
  • 来源:http://bbs.gfan.com/viewthread.php?tid=564753下面说的有点复杂,如果mytouch4g的朋友想试试效果,直接将gps.conf文件改成如下内容,然后看定位速度(不是搜星速度,我的搜星速度一直是10秒以内的)有没有...
  • 文件系统对单个文件大小的限制

    千次阅读 2017-11-25 08:56:00
    FAT16文件系统已不能适应当前这种容量的硬盘,必须被迫分区成几个磁盘空间。而分区磁盘的大小又牵扯出簇的问题来,可谓影响颇。  (2)使用簇的大小不恰当。试想,如果一个只有1KB大小的文件放置在一个1000MB...
  • rsync网络不稳定情况下的大文件传输

    千次阅读 2017-06-19 17:43:12
    rsync网络不稳定情况下的大文件传输 由于本人供职的公司提供单机游戏的下载,而单机游戏一般都较,我们使用了rsync把本地服务器(本地仓库)同步到外国服务器(国外仓库)最后再同步到国外的web前端服务器。 ...
  • 海量小文件问题综述

    万次阅读 多人点赞 2013-08-15 12:13:51
    海量小文件LOSF问题是工业界和学术界公认的难题,分析了LOSF问题的由来以及典型的应用场景,并简要阐述了当前文件系统在LOSF优化方面的进展。重点分析LOSF问题的根本原因,并给出具体的优化方法和策略,期望对LOSF...
  • MySQL 8 复制(二)——半同步复制

    千次阅读 多人点赞 2019-05-16 18:01:45
    但半同步复制确实会对性能产生一些影响,因为需要等待从库,提交速度会变慢,延迟至少是将提交发送到从库并等待从库确认收到的TCP/IP往返时间。这意味着半同步复制最好在低延时的网络中使用。 二、性能提升 1....
  • 前面,在博文《MySQL之——MS主从复制(读写分离)实现》一文中,我们讲解了如何搭建MS模式的MySQL主从复制架构,即:一台Master、一台Slave的MySQL主从复制架构。那么,如何将MS(一Master对应一Slave)扩展为MSSS......
  • 今天,给大家带来一篇如何配置MySQL主从复制,以实现MySQL的读写分离。今天这篇我们是基于MySQL 5.6来实现MySQL的主从复制的。 一、服务器规划 首先我们需要两台服务器,一台作Master服务器,一台作Slave服务器。 ...
  • 目录 数据库的日志 日志类型: 各种日志的主要功能 数据库的主从复制 主从复制的类型 ...主从复制的原理 ...主从复制的步骤 ...如果想开启其他的日志,需要手动在 /etc/my.cnf 配置文件中开启。 日志类型:...
  • Docker Compose搭建MySQL主从复制集群

    千次阅读 2018-09-14 13:47:31
    随着应用业务数据不断的增大,应用的 响应速度不断下降,在检测过程中我们不难发现大多数的请求都是 查询操作。此时,我们可以将数据库扩展成 主从复制模式,将 读操作 和 写操作 分离开来,多台数据库 分摊请求,...
  • 使用MHA实现MySQL主从复制高可用

    万次阅读 多人点赞 2018-07-31 16:37:10
    1. 配置主从复制 2. 安装Perl等依赖模块 3. 配置SSH登录无密码验证 4. 安装MHA Node 5. 安装MHA Manager 6. 配置MHA 7. 创建相关脚本 四、检查MHA配置 1. 检查SSH配置 2. 检查整个复制环境状况 3. 检查MHA...
  • @EnableAutoConfiguration找到META-INF/spring.factories(需要创建的bean在里面)配置文件 读取每个starter中的spring.factories文件 Spring Boot 的核心注解 核心注解是@SpringBootApplication 由以下三种组成 @...
  • session的复制与共享

    千次阅读 2018-05-12 19:45:28
    在web应用中,为了应对规模访问,必须实现应用的集群部署.要实现集群部署主要需要实现session共享机制,使得多台应用服务器之间会话统一, tomcat等多数主流web服务器都采用了session复制以及实现session的共享. 但...
  • Ceph 最近才加入到 Linux 中令人印象深刻的文件系统备选行列,它是一个分布式文件系统,能够在维护 POSIX 兼容性的同时加入了复制和容错功能。探索 Ceph 的架构,学习它如何提供容错功能,简化海量数据管理。
  • Redis配置文件参数说明: ...2. 当Redis以守护进程方式运行,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定 pidfile /var/run/redis.pid 3. 指定Redis监听端口,默认端口为637
  • StorNext海量小文件性能测试与调优

    万次阅读 热门讨论 2011-04-29 20:54:00
    StorNext是一款完全针对SAN共享环境设计的并行文件系统,主要特点是高性能数据速率和容量,它能充分发挥存储系统硬件的性能。它特别适用于高性能工作流和归档之类的大数据块连续访问的应用,在媒体、广电、石油、...
  • Linux内存文件系统

    千次阅读 2016-04-27 12:04:31
    Linux内存文件系统:RamDisk,ramfs,tmpfs
  • [转]Berkeley DB介绍及主从复制机制

    千次阅读 2016-05-27 20:37:39
    库开发程序需要连接的库文件   3.   如何获得 BDB 的相关知识 BDB 提供里非常详细的文档,可以官方网站获得 html 或 pdf 版本的文档。这里对 pdf 版本的一些文档简介如下: BDB_Installation.pdf :  BDB 的...
  • 分布式文件系统:HDFS 核心原理

    千次阅读 2020-09-04 11:27:15
    HDFS 使用多台计算机存储文件, 并且提供统一的访问接口, 像是访问一个普通文件系统一样使用分布式文件系统。作为大数据生态最重要的组件之一,HDFS充当着大数据时代的数据管理者的角色,为各个分布式计算组件提供了...
  • 并行文件系统近期的一些研究

    千次阅读 2016-08-05 14:38:34
    作者:朱赛凡 近期对并行文件系统做一些一些研究,主要...2 并行文件系统更多用在高性能计算中,这样场景一般包括:(1) 多个分析进程并行读写一个非常大文件; (2) 单个进程能够以非常的带宽读写一个文件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,701
精华内容 16,680
关键字:

复制大文件时速度下降