C# 有什么方法可以优化这个C代码吗?
我有我的代码,我想优化它。对我来说,它看起来已经优化了。有人能建议我如何使它更优化一点吗C# 有什么方法可以优化这个C代码吗?,c#,C#,我有我的代码,我想优化它。对我来说,它看起来已经优化了。有人能建议我如何使它更优化一点吗 if (target == "power") { return new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } }; } if (target == "notes") { return new JsonResult { Data = new { RC = new Data.
if (target == "power")
{
return new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } };
}
if (target == "notes")
{
return new JsonResult { Data = new { RC = new Data.AdminNotes(datastoreValue).Refresh() } };
}
if (target == "book")
{
return new JsonResult { Data = new { RC = new Data.AdminBook(datastoreValue).Refresh() } };
}
return null;
我唯一要做的就是将
if
s更改为if-elseif
链。要提高性能,您真的无法做任何其他事情。我唯一要做的就是将if
s更改为if elseif
链。实际上,您无法做任何其他事情来提高性能。如果您知道将更频繁地使用“book”
值调用您的方法,那么您应该将其放在首位。基本上按频率顺序排序。如果您知道您的方法将更经常地使用“book”
值调用,那么您应该将其放在第一位。基本上按频率顺序排序。开关语句适用于以下情况:
switch(target)
{
case "power":
return new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } };
case "notes":
return new JsonResult { Data = new { RC = new Data.AdminNotes(datastoreValue).Refresh() } };
case "book":
return new JsonResult { Data = new { RC = new Data.AdminBook(datastoreValue).Refresh() } };
default:
return null;
}
实际上不需要中断tho,因为它每次都会返回,但这是一种很好的做法。switch语句非常适合以下情况:
switch(target)
{
case "power":
return new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } };
case "notes":
return new JsonResult { Data = new { RC = new Data.AdminNotes(datastoreValue).Refresh() } };
case "book":
return new JsonResult { Data = new { RC = new Data.AdminBook(datastoreValue).Refresh() } };
default:
return null;
}
我真的不需要休息,因为它每次都会回来,但这是一个很好的做法。我不知道你对优化的看法是什么, 就速度而言,只需在第二个和第三个“如果”之前加上一些“其他” 但是,如果您的意思是代码行更少,那么下面的内容可能会对您有所帮助:
return
((target == "power") ? new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } } :
((target == "notes") ? new JsonResult { Data = new { RC = new Data.AdminNotes(datastoreValue).Refresh() } } :
((target == "book") ? new JsonResult { Data = new { RC = new Data.AdminBook(datastoreValue).Refresh() } } : null))))
我不知道你对优化有什么想法, 就速度而言,只需在第二个和第三个“如果”之前加上一些“其他” 但是,如果您的意思是代码行更少,那么下面的内容可能会对您有所帮助:
return
((target == "power") ? new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } } :
((target == "notes") ? new JsonResult { Data = new { RC = new Data.AdminNotes(datastoreValue).Refresh() } } :
((target == "book") ? new JsonResult { Data = new { RC = new Data.AdminBook(datastoreValue).Refresh() } } : null))))
正如其他人所提到的,您应该将它们按最可能发生的顺序排列,以尽量减少错误比较的总数 也许可以将“power”、“notes”和“book”更改为enum或int表示形式,这可能比字符串比较快一些
不过,您所能做的并不是很多,这将导致任何重大优化。正如其他人所提到的,您应该按最可能发生的顺序排列,以尽量减少错误比较的总数 也许可以将“power”、“notes”和“book”更改为enum或int表示形式,这可能比字符串比较快一些
不过,您所能做的并不是很多,这将导致任何重大的优化。因为您觉得它已经足够好了,所以在大多数情况下,您可以继续前进。您在这里获得的任何性能肯定都是微不足道的?但如果你真的想改变什么,我同意使用switch。你能把你的目标变成枚举吗?然后可以使用
Target.Book
,Target.Notes
,等等。然后比较枚举值,而不是文字字符串。但是,我看不到目标被分配到哪里,所以这可能不是一个选项。因为它对您来说已经足够好了,您可以在大多数情况下继续前进。您在这里获得的任何性能肯定都是微不足道的吗?但如果你真的想改变什么,我同意使用switch。你能把你的目标变成枚举吗?然后可以使用Target.Book
,Target.Notes
,等等。然后比较枚举值,而不是文字字符串。但是,我看不到将target
分配到哪里,因此这可能不是一个选项。OP在if块中返回,因此else if
不会有帮助。@code裸体:我没有说它会有帮助。最好告诉阅读代码的人条件是相互排斥的。OP在if块中返回,因此else if
不会有帮助。@code裸体:我没说它会有帮助。最好与阅读代码的任何人沟通,条件是相互排斥的。请参阅@Nick,您将获得无法访问的代码
关于中断的警告代码>我不认为中断是必要的。我说中断不是必要的,只是说在我看来这是一种良好的做法。OP可以删除,如果她想看到@Nick,你将得到中断的无法访问的代码警告代码>我不认为中断是必要的。我说中断不是必要的,只是说在我看来这是很好的做法。OP可以删除,如果她想的话。如果我看到我必须维护的代码中的那行代码,我的眼睛会翻到我的头上,我可能会咕哝一些关于程序员来源的非常不有趣的事情。优化很好,但不会导致可读性消失……在优化过程中,删除所有空格和换行符:)。没有什么比早上读一条多行三元语句更能唤醒你了。如果我看到我必须维护的代码中的那一行,我的眼睛会翻到我的脑袋里,我可能会咕哝一些关于程序员起源的非常不有趣的事情。优化很好,但不会导致可读性消失……在优化过程中,删除所有空格和换行符:)。没有什么比早上读多行三元语句更能唤醒你了。