コード例 #1
0
ファイル: os_hw2.cpp プロジェクト: kahissa/hw2
int _tmain(int argc, _TCHAR* argv[])
{
	uint32_t uSize = 5000; // 4gb 이상 가능
	LARGE_INTEGER Size;    // 

	DWORD bufSize = 2048;  // 32bit가 4gb 인데 실질적으로 2gb 사용 가능
	// 그러니 최대인 2048M 씩 할당
	LARGE_INTEGER offset;  // 크기
	offset.QuadPart = (LONGLONG)0;

	StopWatch sw1, sw2;



	Size.QuadPart = (LONGLONG)(1024 * 1024) * (LONGLONG)uSize;;

	_ASSERTE(create_very_big_file(L"big.txt", uSize));

	sw1.Start();
	_ASSERTE(file_copy_using_read_write(L"big.txt", L"big2.txt"));
	sw1.Stop();
	print("info] time elapsed = %f", sw1.GetDurationSecond());


	PUCHAR buf = (PUCHAR)malloc(bufSize);


	sw2.Start();

	FileIoHelper Helper;
	Helper.FIOpenForRead(L"big.txt");
	Helper.FIOCreateFile(L"big3.txt", Size);

	while (offset.QuadPart < Size.QuadPart)
	{
		if ((Size.QuadPart - offset.QuadPart) >(LONGLONG)bufSize)
			bufSize = 2048;
		else
			bufSize = (DWORD)(Size.QuadPart - offset.QuadPart);

		Helper.FIOReadFromFile(offset, bufSize, buf);
		Helper.FIOWriteToFile(offset, bufSize, buf);

		offset.QuadPart += (LONGLONG)bufSize;
	}
	sw2.Stop();
	print("info] time elapsed = %f", sw2.GetDurationSecond());


	return 0;
}
コード例 #2
0
ファイル: 과제2.cpp プロジェクト: M0nk2y/HW
int _tmain(int argc, _TCHAR* argv[])
{
	 uint32_t goalsize = 6144; // 6GB
	 
	 
    _ASSERTE(create_very_big_file(L"big.txt",goalsize));//목표크기 6GB만큼 파일 생성


    StopWatch sw; 
    sw.Start();
    _ASSERTE(file_copy_using_read_write(L"big.txt", L"big2.txt"));
    sw.Stop();   
    print("info] (Read Write) time elapsed = %f", sw.GetDurationSecond());


	LARGE_INTEGER _Filesize; 
	_Filesize.QuadPart = (LONGLONG)(1024*1024)*(LONGLONG)goalsize;//파일의 크기 6GB 설정하기위해 LARGE_INTEGER
	DWORD bufS = 4096; // read.write에서 buf가 4096이므로 4096설정
	PUCHAR buf = (PUCHAR)malloc(bufS);

	LARGE_INTEGER _Offset;
	_Offset.QuadPart = 0; //파일을 옮겨주는 계산을 하는데 사용한다.



    StopWatch sw2;
	sw2.Start();
    
	FileIoHelper FileHelp;
	FileHelp.FIOpenForRead(L"big.txt");
	FileHelp.FIOCreateFile(L"big3.txt", _Filesize);

	while(_Filesize.QuadPart > _Offset.QuadPart)         
	{
		if((_Filesize.QuadPart - _Offset.QuadPart) > (LONGLONG)bufS)
			bufS = 4096;
		
		else
			bufS = (DWORD)(_Filesize.QuadPart - _Offset.QuadPart);

		FileHelp.FIOReadFromFile(_Offset, bufS, buf);
		FileHelp.FIOWriteToFile(_Offset, bufS, buf);
		_Offset.QuadPart += (LONGLONG)bufS;
	}
    sw2.Stop();
    print("info] (Memory Map) time elapsed = %f", sw2.GetDurationSecond());


    return 0;
}
コード例 #3
0
ファイル: ConsoleApplication1.cpp プロジェクト: GrayField/BoB
int _tmain(int argc, _TCHAR* argv[])
{
	/*
	_ASSERTE(create_very_big_file(L"big.txt", 5000));

	StopWatch sw2;
	sw2.Start();
	_ASSERTE(file_copy_using_memory_map(L"big.txt", L"big3.txt"));
	sw2.Stop();
	print("info] time elapsed = %f", sw2.GetDurationSecond());


	StopWatch sw;
	sw.Start();
	_ASSERTE(file_copy_using_read_write(L"big.txt", L"big4.txt"));
	sw.Stop();
	print("info] time elapsed = %f", sw.GetDurationSecond());
	*/

	FileIoHelper Helper;
	uint64_t size=5000;
	LARGE_INTEGER file_size;
	LARGE_INTEGER offset;
	offset.QuadPart = 0;
	DWORD bufsize = 2048*1024*1024;
	PUCHAR buf = (PUCHAR)malloc(bufsize);

	file_size.QuadPart = (1024 * 1024) * size;

	

	
	_ASSERTE(create_very_big_file(L"big.txt", size));

	StopWatch sw2;
	sw2.Start();
	Helper.FIOpenForRead(L"big.txt");
	Helper.FIOCreateFile(L"big2.txt", file_size);

	while (offset.QuadPart < file_size.QuadPart) {
		if ((file_size.QuadPart - offset.QuadPart) >(LONGLONG)bufsize)
		{
			bufsize = 2048*1024*1024;
		}
		else {
			bufsize = (DWORD)(file_size.QuadPart - offset.QuadPart);
		}

		Helper.FIOReadFromFile(offset, bufsize, buf);
		Helper.FIOWriteToFile(offset, bufsize, buf);

		offset.QuadPart += (LONGLONG)bufsize;
	}

	sw2.Stop();
	print("info] time elapsed = %f", sw2.GetDurationSecond());


	StopWatch sw;
	sw.Start();
	_ASSERTE(file_copy_using_read_write(L"big.txt", L"big3.txt"));
	sw.Stop();
	print("info] time elapsed = %f", sw.GetDurationSecond());



	
	_getwch();
	return 0;
}