On 9/18/06, Andrew Zhang <[EMAIL PROTECTED]> wrote:
On 9/18/06, Richard Liang <[EMAIL PROTECTED]> wrote: > > Hello, > > One Apache Derby test[1] fails on Harmony. It seems that RI always > sync the FileOutputStream and FileChannel after each "write", which is > different from Harmony. But there is no explicit description in Java > Spec. Shall we follow RI? Thanks a lot. > > The following test cases could demonstrate this issue. > > public void testFile() { > File derbyLog = new File("d:\\", "derby1.log"); > > try { > FileOutputStream fos = new FileOutputStream(derbyLog); > fos.write(0x41); > assertEquals(1, derbyLog.length()); > } catch (Exception e) { > e.printStackTrace(); > } > } > > public void testFileChannel() { > File derbyLog = new File("d:\\", "derby2.log"); > > try { > FileOutputStream fos = new FileOutputStream(derbyLog); > FileChannel fc = fos.getChannel(); > fc.write(ByteBuffer.wrap(new byte[]{0x41, 0x42})); > assertEquals(2, derbyLog.length()); > } catch (Exception e) { > e.printStackTrace(); > } > }Interesting. I think we'd better follow RI although it's implementation dependent. Otherwise, it breaks existing application. To make test more interesting, I wrote a similar test: public void testFile() throws Exception { File derbyLog = File.createTempFile("test", "log"); derbyLog.deleteOnExit(); RandomAccessFile fos = new RandomAccessFile(derbyLog, "rws"); for (int i = 0; i < 1000; i++) { fos.write(0x41); assertEquals(1 + i, derbyLog.length()); } } Run it and you'll be surprised. :-)
Wow! It tooks RI 0.381 seconds, while 21.761 seconds for Harmony. We shall improve our performance! Let's have a more further study about this issue.
[1] > http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/logStream.java?view=co > -- > Richard Liang > China Development Lab, IBM > > --------------------------------------------------------------------- > Terms of use : http://incubator.apache.org/harmony/mailing.html > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Andrew Zhang China Software Development Lab, IBM
-- Richard Liang China Development Lab, IBM --------------------------------------------------------------------- Terms of use : http://incubator.apache.org/harmony/mailing.html To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
