Matlab程序优化:任务数与最大执行时间关系图
使用Matlab绘制任务数与最大执行时间关系图
本程序使用Matlab绘制任务数与最大执行时间的关系图,分析不同任务数量下程序执行时间的变化趋势。程序利用随机生成的任务输入大小,计算两种执行模式下的时间,并取最大值作为纵坐标变化量。
代码示例:
f0=1000000000;
f1=5000000000;
C=2000000;
z=0;
Q=[5 10 15 20 25];%任务数作为自变量,确定随机数的生成个数
for s=1:5
nums=randi([10000 50000],1,Q(s));%随机数的生成,任务输入大小dn
sorted_nums=sort(nums);%从小到大排序
for i=1:Q(s)
T0=0;
T1=0;
for m=1:i
c(m)=1000*sorted_nums(m);
T0=T0+c(m)/f0;
end
for n=i+1:Q(s)
c(n)=1000*sorted_nums(n);
d(n)=sorted_nums(n);
T1=T1+d(n)/C+c(n)/f1;
end
if T0>=T1
k=i;
break;
end
end
end
max_T = zeros(1,5); % 初始化纵坐标变化量
for s=1:5
nums=randi([10000 50000],1,Q(s));%随机数的生成,任务输入大小dn
sorted_nums=sort(nums);%从小到大排序
for i=1:Q(s)
T0=0;
T1=0;
for m=1:i
c(m)=1000*sorted_nums(m);
T0=T0+c(m)/f0;
end
for n=i+1:Q(s)
c(n)=1000*sorted_nums(n);
d(n)=sorted_nums(n);
T1=T1+d(n)/C+c(n)/f1;
end
if T0>=T1
k=i;
break;
end
end
max_T(s) = max(T0, T1); % 记录每组数据的纵坐标变化量
end
plot(Q, max_T); % 画图,以任务数Q为横坐标,以每一次T0和T1的较大者为纵坐标变化量
程序功能:
- 使用
randi
函数生成随机数作为任务输入大小。 - 对生成的随机数进行排序,方便后续计算。
- 计算两种执行模式下的时间
T0
和T1
,分别代表不同任务分配策略下的执行时间。 - 取
T0
和T1
中的最大值作为纵坐标变化量,记录到max_T
数组中。 - 使用
plot
函数绘制任务数Q
与最大执行时间max_T
的关系图。
程序分析:
通过分析生成的图表,可以观察到任务数与最大执行时间之间的关系。根据图表趋势,可以进一步分析程序性能,优化任务分配策略,提高程序效率。
注意:
- 程序中的参数
f0
,f1
,C
需要根据实际情况进行修改。 - 可以调整随机数生成范围
[10000 50000]
来模拟不同任务输入大小。 - 可以通过修改
Q
数组的值来改变任务数的取值范围。
进一步优化:
- 可以使用向量化操作来提高程序效率。
- 可以使用不同的绘图函数来创建更加精美的图表。
- 可以添加注释和说明,使程序更加清晰易懂。
原文地址: http://www.cveoy.top/t/topic/jkvy 著作权归作者所有。请勿转载和采集!