文件操作的效率,欢迎讨论和赐教
whoho 2005-09-08 04:51:07 其实讨论时希望能够一般化一些
暂只考虑二进制文件操作方式。
考虑这么一个操作,在往一个文件追加(没有其他操作类型)时,
实际上运行时间效率与所处的操作系统可能有密切关系,但总的说来,
在通常流行的操作系统上,能否达到常数时间复杂度?也就是说,
添加一段确定大小的数据,运行时间会不会独立于原有文件的尺寸,而是常数时间?
以下三个比较相关的问题:
(1)在文件当中的某个位置插入一个“记录”,通常程序的写法中,都会有将
从所插入位置开始的所有剩余数据进行“后移”的操作;
(2)如果是删除记录,又会有将删除位置后方的所有记录前移的操作;
(3)在(2)中的假设是可以对文件进行“截尾”的情形,如果文件系统没有
提供直接“截尾”的功能,可能意味着要把原有的文件拷贝到新的文件中,
但不复制要删除的记录。
这三个问题中,如果我要操作的记录的位置是随机的,那就需要常数复杂度O(n),
有没有能够克服这种问题的办法呢?或者说,要达到的话必须写针对各个不同
文件系统的程序?