Kris Kennaway wrote:
I don't understand what you meant by "It's also doing a lot of lseek()s
to what is likely the current position anyway (example: seek to 0x00,
read 16 bytes, seek to 0x10, etc.)." then.
I just meant that 16 was a smaller number than 4096 to use in an
example. :-)
But anyway, it looks like I was wrong. Each record in this test file is
144 bytes long, but instead of reading 144 bytes, it's reading 4096
bytes then seeking backward 3952 (4096-144) bytes to the start of the
next record. For instance:
99823 dumprecspg CALL lseek(0x3,0x1c8,SEEK_SET,0)
99823 dumprecspg CALL read(0x3,0x8106000,0x1000)
99823 dumprecspg CALL lseek(0x3,0x258,SEEK_SET,0)
99823 dumprecspg CALL read(0x3,0x8106000,0x1000)
99823 dumprecspg CALL lseek(0x3,0x2e8,SEEK_SET,0)
99823 dumprecspg CALL read(0x3,0x8106000,0x1000)
99823 dumprecspg CALL lseek(0x3,0x378,SEEK_SET,0)
99823 dumprecspg CALL read(0x3,0x8106000,0x1000)
Now, I know this is suboptimal. My code is a patch on another,
longer-established project that I wasn't a part of, and I probably can't
do a lot about it without a pretty major rewrite. Still, I can't
believe the same code is *so* much faster on Linux. I'd also swear that
this is a regression and that it used to run much faster on the same
FreeBSD machine back when it was running 6.x, but I never bothered to
benchmark it then because it didn't seem to be an issue.
--
Kirk Strauser
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"