Mail Archives: djgpp/1997/09/14/14:52:57
At 03:07 9/12/1997 GMT, Matthew L. Ginsberg wrote:
>
>I'm trying to run two copies of a large app built using djgpp under
>dos, and it's only running at about half the speed that it runs under
>linux. In addition, the swapping behavior seems much worse.
>
>The app does a tremendous number of small mallocs and frees, and it's
>also possible that I'm somehow producing 16-bit code under dos and
>32-bit code under linux. Are these likely to be the source of the
>problem? And if so, any suggestions as to how I might fix them?
You are quite definitely not producing 16-bit code. GCC couldn't if it
wanted to.
Swapping and disk access are likely to be much slower under DJGPP than
Linux. Reasons:
- DJGPP has to do a mode switch for disk access, while Linux stays in
protected mode always.
- DJGPP swaps to a file, which requires using DOS's file read/write calls,
which require file system stuff. Linux can swap directly to a partition.
- DOS does 16-bit disk access and does it through the BIOS, while Linux does
32-bit disk access and talks directly to the hardware.
Another possible problem: DJGPP's malloc is wasteful, though quite fast.
It's unknown if the unused memory is actually needed or not. You could
implement some other kind of dynamic memory, for instance use a growing
stack. (Disadvantage: It all has to be freed in order, or all together.)
Other than that, I don't know what you can do but live with it. Sorry.
Nate Eldredge
eldredge AT ap DOT net
- Raw text -