简单的方法性能如何改进
场景:进销存系统设计中,有个产品规格名称“件*卡*盒*散数”,对应的规格数量为“1*4*12*60”,我现在想通过单位得到对应这个单位的总的散数,如:“件”的散数为4*12*60,卡的散数为12*60。以下是我刚刚实现的函数,总觉得性能太差了,因为这个方法要频繁调用的,恳请大家也帮忙想想如何改进。
/// <summary>
/// 通过单位和规则得到对应单位的散数总数
/// </summary>
/// <param name= "RuleTitle "> 名称规则 </param>
/// <param name= "RuleNum "> 数字规则 </param>
/// <param name= "UnitName "> 单位名称 </param>
/// <returns> </returns>
public int CalcUintTotalNumber(string RuleTitle, string RuleNum, string UnitName)
{
string[] titles = RuleTitle.Split( '* ');
string[] rules = RuleNum.Split( '* ');
int result = 1;
for (int i = 0; i < titles.Length; i++)
{
if (titles[i] == UnitName)
{
for (int j = i + 1; j < rules.Length; j++)
{
result *= Convert.ToInt32(rules[j]);
}
return result;
}
}
return result;
}
两层循环太恐怖了,不知道有没有更好的实现方法呢:(
目前的调用实例:
int a = CalcUintTotalNumber( "件*卡*盒*散数 ", "1*4*12*60 ", "卡 ");
------解决方案--------------------
由于不清楚你的实施的具体情况,
从贴子的内容判断应该是用来计算类似存放货品的数量的
由于这个存放货品的设备基本上是固定的数量,不会随意变化的
我的思路是这样的;
先计算出一件的散数 ,一卡的散数,一盒的散数, 并把这些值存储起来
如果这些规格数是要变动的话,就需要让用户设置,并把其它上面三个数值按一定的数据模式存入
数据库内,让用户选择一种数据模式进行计算,(这样就可以把问题抛回给用户了)
然后参数只需要单位和该单位的数量,通过单位找到对应的一个单位的散数,乘上单位数量结果就出来,循环都不用写了
[解决办法]
这也叫慢?
第一个循环才运行到2,第二个循环才运行到4.
这么小的循环就不用理它啦!浪费时间。
[解决办法]
JF~
[解决办法]
Convert.ToInt32(rules[j]);
换成
int.Parse(rules[j]);
[解决办法]
这样是不是会好一点
/// <summary>
/// 通过单位和规则得到对应单位的散数总数
/// </summary>
/// <param name= "RuleTitle "> 名称规则 </param>
/// <param name= "RuleNum "> 数字规则 </param>
/// <param name= "UnitName "> 单位名称 </param>
/// <returns> </returns>
public int CalcUintTotalNumber(string RuleTitle, string RuleNum, string UnitName)
{
string[] titles = RuleTitle.Split( '* ');
string[] rules = RuleNum.Split( '* ');
int result = 1;
for (int i = 0; i < titles.Length; i++)
{
if (titles[i] != UnitName)
{
result *= int.Parse(rules[j]);
}
}
return result;
}
[解决办法]
jf
[解决办法]
又不读大数据库。又没很多循环。
小消耗了。
[解决办法]
楼上j呢?