(performance engineer hat engaged)
On 4 Oct 2006, at 01:30, David Given wrote:
Incidentally, I also have an NSLU2, which is a similar specced ARM device with 32MB and a USB 2 disk. Trying to compile C++ on that more or less kills it stone dead. Trying to compile a 4000 line C++ program took, basically, all day; I think this is because the C++ compiler's working set is too big to fit in RAM, which means its thrashing the swap continuously. So given that the E3 has a USB 1 connection, making for ludicrously slow swap, things would be even worse on it.
Were you running gcc from flash, or from disc? If it's running from flash, I would expect that to be faster than (at least USB1) disc. Since program text pages do not change appreciably during the run, they do not need to be copied into writable swap, and so the rapid access of Flash can be a big boost when you're short on RAM pages. (Linux will discard pages of program without saving them into swap, so you effectively get a free page of swap for every text page).
Compiling with -O3 -fomit-stack-frame also helps ARM a lot more than you might expect, since the optimizer can make serious gains there- might want to check which flags your gcc was built with.
-J.