delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2005/07/18/21:45:55

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
From: zeo AT logicplant DOT com
Newsgroups: comp.os.msdos.djgpp
Subject: Watt32 with DJGPP - read performance is extreamly poor
Date: 18 Jul 2005 18:42:27 -0700
Organization: http://groups.google.com
Lines: 57
Message-ID: <1121737347.351585.124950@g43g2000cwa.googlegroups.com>
NNTP-Posting-Host: 218.153.76.98
Mime-Version: 1.0
X-Trace: posting.google.com 1121737352 30292 127.0.0.1 (19 Jul 2005 01:42:32 GMT)
X-Complaints-To: groups-abuse AT google DOT com
NNTP-Posting-Date: Tue, 19 Jul 2005 01:42:32 +0000 (UTC)
User-Agent: G2/0.2
Complaints-To: groups-abuse AT google DOT com
Injection-Info: g43g2000cwa.googlegroups.com; posting-host=218.153.76.98;
posting-account=QZ8mAQwAAADGDSjtF3mYFO8QPMNgREeg
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

I use Watt32 with DJGPP for my 32-bit protected DOS program.
My program reads a large bulk of data (usually > 1GB) to process.
And I also wrote nearly the same program that runs on Windows XP.
(actually, a large portion of the source code is shared)
But when I compare the two programs, the DOS program that uses Watt32 +
DJGPP is 60 times slower than the Windows XP counterpart. That is,
while the program on Windows XP finishes a task in 2 minutes, DOS
version takes 2 hour to complete the same task.
BTW, my programs can also process the data on local disk. When I ran
two programs for the local data, performance difference was not that
great. (DOS version is 1.5~2 times slower. The reason is that the
Windows program uses threads for some background subtask.)

60 time slow is too much.

And when I tested socket read alone, DOS version took 22 secs to read
3MB data. It is somewhat... ridiculous.

Is there anyone experienced the same problem like me?
I suspect the configuration, but cannot find any problem.

The part of the source code that reads data using Watt32 is as follows.

=========

int OGSocket::recv(char *a_pBuff, int a_len)
{
	waitInput();
	int ret = sock_fastread(m_pSock, a_pBuff, a_len);
	return ret;
}

void OGSocket::waitInput()
{
	if (_ip_delay1(m_pSock, sock_delay, NULL, NULL))
		throwError(_T("waitInput failed"));
}

void OGSocket::throwError(const TCHAR *a_sMsg)
{
	throw OGException(OGERR_WT_SOCKET_ERROR,
		OGUtil::format(_T("%s (%s)"), a_sMsg,
			sockerr(m_pSock)).c_str());
}

==========

and WATTCP.CFG is as follows (simple)

==========

MY_IP=DHCP

==========

Thanks in advance.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019