关于flush性能的疑问

关于flush性能的疑问

import time

f = open("hello.txt", "w")

begin = time.clock()
i = 0
while 1:
        if i == 1000000:
                break
        f.write('1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111')
        i = i + 1
        #f.flush()(这处打开新能差3倍)

f.flush()
print time.clock() - begin

f.close()


上面的代码,在linux2.6最新内核、python 2.5上做的测试。
每写一行都flush用了3.55秒,
去掉第一个flush,写完文件用了1.1秒,快了3倍啊。
我觉的flush只是把c库的buffer中的内容刷新到磁盘缓冲,并不是同步的过程,所以比较疑惑。
请教高手指点。
flush跟c 的fflush不是一样么?每一行都flush多了很多次io操作,慢3倍也很正常。
另外flush是将缓冲区内容写入文件,不知道你说的同步的过程是什么意思?第二个flush没什么必要



QUOTE:
原帖由 luffy.deng 于 2009-1-22 15:31 发表
flush跟c 的fflush不是一样么?每一行都flush多了很多次io操作,慢3倍也很正常。


想想你循环了多少次
python中的flush内部调用的是c的flush吧,
我觉的write文件的操作只是写文件到操作系统cache而已,并不等待写磁盘完成,所以应该是很快的。