Directory recursive walking

dog2002 742617000027 at aaathats3as.com
Fri Jan 15 09:27:58 UTC 2021


On Friday, 15 January 2021 at 06:15:06 UTC, dog2002 wrote:
> On Thursday, 14 January 2021 at 22:28:19 UTC, Paul Backus wrote:
>> On Thursday, 14 January 2021 at 20:23:37 UTC, dog2002 wrote:
>>> [...]
>>
>> What code are you using to copy the bytes? If you're reading 
>> the whole file into memory at once, that will consume a lot of 
>> memory.
>
> void func(string inputFile, string outFile, uint chunk_size) {
> 	try {
> 		File _inputFile = File(inputFile, "r");
> 		File _outputFile = File(outFile, "w");
> 		
> 		ubyte[] tempBuffer = _inputFile.rawRead(new ubyte[](512));
> 	
>                 //doing some operations with the tempBuffer	
>
> 		_outputFile.rawWrite(tempBuffer);
> 		
> 		_inputFile.seek(tempBuffer.length, SEEK_SET);
> 		
> 		
> 		foreach(_buffer; _inputFile.byChunk(chunk_size)) {
> 			_outputFile.rawWrite(_buffer);
> 		}
> 		_inputFile.close();
> 		_outputFile.close();
> 	}
> 	catch (Throwable) {}
>
> }

Okay, the reason is incredibly stupid: using WinMain instead of 
main causes high memory usage. I don't know why, I use the same 
code. If I replace WinMain with main, the memory consumption is 
about 6 MB.


More information about the Digitalmars-d-learn mailing list