(1)硬盘安装linux系统;
完成。
(2)生成core文件;
完成,并整理文档
(3)初步学会gdb调试core;
完成,还不太熟练。可以根据core文件找到错误位置。
(4)将整理法建堆改成c++版,并用千万级的数据测试时间;
完成,发现一个问题,1000w的数据量在分配内存时就会core dump,后来发现1000万的数据大概要占用40M空间。查询得知是linux默认的栈空间太小的原因所致。通过命令 ulimit -s 查看linux的默认栈空间大小,默认情况下为8192KB即8M。通过命令 ulimit -s 设置大小值临时改变栈空间大小:ulimit -s 204800,即修改为200M。
(5)从几个细节优化:(a)递归函数改成while循环;(b)减少比较次数;(c)减少交换次数;
完成。
(2)生成core文件;
完成,并整理文档
(3)初步学会gdb调试core;
完成,还不太熟练。可以根据core文件找到错误位置。
(4)将整理法建堆改成c++版,并用千万级的数据测试时间;
完成,发现一个问题,1000w的数据量在分配内存时就会core dump,后来发现1000万的数据大概要占用40M空间。查询得知是linux默认的栈空间太小的原因所致。通过命令 ulimit -s 查看linux的默认栈空间大小,默认情况下为8192KB即8M。通过命令 ulimit -s 设置大小值临时改变栈空间大小:ulimit -s 204800,即修改为200M。
(5)从几个细节优化:(a)递归函数改成while循环;(b)减少比较次数;(c)减少交换次数;
完成。参见:调整法建堆过程的优化
完成,参见(5)的结果.
(7)完成c++ primer的第二章
完成了一半