老师的作业需要对功能4-1进行效能分析,我最终没有做出来功能4-1,所以也就无法对要求的部分进行分析。但是分数只是学习的一部分,就算没有分数或者倒扣分数,也不影响学习这部分知识的重要性,所以我决定用功能2进行分析。
要求0:
我没有读入战争与和平,而是读入了test.txt 内容为 “my English is very very very poor.”
平均值为(0.887+0.895+0.882)/3=0.888s
要求1:
我猜测是对词频进行排序这里可能耗费时间比较多。
//根据单词出现次数进行排序 for (n = 0; n < i - 1; n++) { k = n; // for (j = 0; j < i; j++) for (j = n + 1; j < i; j++) if (W[j].num > W[k].num) { k = j; temp = W[k].num; W[k].num = W[n].num; W[n].num = temp; strcpy_s(b, 15, W[k].a); strcpy_s(W[k].a, 15, W[n].a); strcpy_s(W[n].a, 15, b); } }
这里是冒泡排序,可能剪枝没有做好吧,又频繁调用了函数strcpy_s(),我猜测会出现问题。
要求2:
我开始了性能分析的过程,首先点击分析按钮
进入界面,勾选性能向导
结果出现了这个
点进我单个工作最多的函数main()也就是主函数
看到了我占比最多的三条语句
要求3:
这不是我想要的瓶颈...我还是对排序进行了剪枝优化
要求4:
再次分析我的程序是这样的
之后的ptime
平均值为(0.873+0.880+0.882)/3=0.878s
并没有优化多少。