chenall 发表于 2014-12-23 14:52 使用char cmdline_buf[1500]是旧版本的(也就是速度比较快的) 新的版本是使用专用内存块的.
使用道具 举报
不点 发表于 2014-12-23 15:07 这样就有溢出的可能了。反复调用这个函数,会导致内存消耗变大,这样就容易间接造成内存冲突。
chenall 发表于 2014-12-23 15:51 所有执行的命令都是通过这个函数来执行的. 一个比较常见的情况就是执行了一个批处理..这时批处理里面 ...
chenall 发表于 2014-12-23 19:28 虽然表面上看起来是这里的问题,不过我估计应该有更深的原因. 我通过在MAP_FUNC函数里面插入一些DEBUG信 ...
另外请yaya确认下,0.4.6a对map函数的修改是否有问题. 0.4.5c的map命令调用blocklist_func时只调用了disk_read_blocklist_func一次,而0.4.6a则调用了很多次..
2011yaya2007777 发表于 2014-12-23 20:32 为了确定映像文件的连续性,0.4.6a 确实是对没有 --mem 参数的映像文件 1 扇区 1 扇区地从头读到尾。这样 ...
chenall 发表于 2014-12-23 21:40 经过追踪,目前发现长时间执行的代码段在disk_io.c里面如下代码(0.4.5c),相差了一倍的时间,很是怪异.
mdyblog 发表于 2014-12-23 23:22 下面是根据猜测的数据结果转换的O(0)复杂度的为代码。填上对应的实际类型。
chenall 发表于 2014-12-24 09:17 大部份参与计算的都是unsigned long long的. 64位的除法,编译不通过,需要自己写一个64位除法的函数.
grub4dos-0.4.5c-2014-12-24.7z
2014-12-24 10:58 上传
点击文件名下载附件
259.02 KB, 下载次数: 3
chenall 发表于 2014-12-24 10:59 修改了一下上面的代码(复杂度还是不变,只是尽量减少了一些循环内部的计算),目前时间应该和0227差不多. ...
00032.png (14.15 KB, 下载次数: 138)
下载附件
2014-12-24 12:18 上传
2014-12-24 11:38 上传
259.22 KB, 下载次数: 10
chenall 发表于 2014-12-24 11:42 和我的测试结果相差太多了,我用前面的版本时间减小了一半... 再试试这个版本,应该可以瞬间完成了.
grldr045c141224-1220.png (15.03 KB, 下载次数: 128)
2014-12-24 12:28 上传
mdyblog 发表于 2014-12-24 12:29 这个算法牛!! 瞬间完成。 麻烦加到 最新的0.46a上, 我再试试。
grub4dos-0.4.6a-2014-12-24.7z
2014-12-24 14:33 上传
270.14 KB, 下载次数: 10
chenall 发表于 2014-12-24 14:35 把这个补丁应用到0.4.6a上,效果不是很明显, 因为0.4.6a需要读取所有扇区的,一个一个读过去的,这个要看 ...
grldr046a-2014-12-24-1500.png (14.2 KB, 下载次数: 148)
2014-12-24 15:14 上传
00034.png (14.41 KB, 下载次数: 144)
2014-12-25 12:33 上传
2011yaya2007777 发表于 2014-12-25 20:39 几种方案: 1. 判断是否属于扇区序列。即便是,也不能简单跳过块列表函数。因为不连续的扇区序列也可以映 ...
00011.png (14.78 KB, 下载次数: 140)
2014-12-26 07:55 上传
对于0.4.6a的这个map检测流程我看得不是很明白.
个人认为使用一个额外的参数来解决不太好,对于用户来说能够不用参数就尽量不要使用.越简单越好.
chenall 发表于 2014-12-26 16:54 另外好像原来的blocklist_func就是可以直接返回块列表的吧? 只不过0.4.5c的map只是简单检测是否连续,这 ...
grub4dos-0.4.6a-2014-12-26.7z
2014-12-26 17:49 上传
270.55 KB, 下载次数: 8
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )
闽公网安备 35020302032614号
GMT+8, 2024-11-27 02:57
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.