算法改进

qinzhich 2014-03-20 04:10:42
请问各路大侠下面这个语句能改进么?
byte myClip(int num)
{
return (byte)(num > 255 ? 255 : num > 0 ? num : 0);
}
...全文
391 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cheng2005 2014-03-21
  • 打赏
  • 举报
回复
引用 11 楼 qinzhich 的回复:
不好意思,这个我没讲清楚,我这边做视频转换,这个语句占用了差不多百分之二十的CPU资源,我想问的是能不能从算法的角度去改写这个语句从而提高效率。
不能光看CPU占用,还要看调用次数,综合的来看。 如果想单纯优化这个方法,首先就像我上面说的,你的两个嵌套的三元表达式首先要拆开,避免多余的操作。 然后你可以分析一下数据,看看那种数据多,大于255,小于0,处于之间,再决定判断的顺序。
小猪八Q 2014-03-21
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
[quote=引用 1 楼 bdmh 的回复:] 够简单的了,还想怎样改
想改得难以读懂才显得时髦吧。[/quote] 应该是为了显得高大上一点
qinzhich 2014-03-21
  • 打赏
  • 举报
回复
不好意思,这个我没讲清楚,我这边做视频转换,这个语句占用了差不多百分之二十的CPU资源,我想问的是能不能从算法的角度去改写这个语句从而提高效率。
ktei2008 2014-03-21
  • 打赏
  • 举报
回复
引用 4 楼 sbwwkmyd 的回复:
这样子可以吗?
return num < 255 ? (byte)(num & (((uint)num >> 31) - 1)) : 255;
不要欺负楼主
zhanglong_longlong 2014-03-21
  • 打赏
  • 举报
回复
已经可以了。。。
ancel 2014-03-20
  • 打赏
  • 举报
回复
这个很简洁了吧
Regan-lin 2014-03-20
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
[quote=引用 1 楼 bdmh 的回复:] 够简单的了,还想怎样改
想改得难以读懂才显得时髦吧。[/quote] 现在的人就是这样的
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
够简单的了,还想怎样改
想改得难以读懂才显得时髦吧。
  • 打赏
  • 举报
回复
if(num>255) num=255; else if(num<0) num=0; return (byte)num;
showjim 2014-03-20
  • 打赏
  • 举报
回复
这样子可以吗?
return num < 255 ? (byte)(num & (((uint)num >> 31) - 1)) : 255;
cheng2005 2014-03-20
  • 打赏
  • 举报
回复
没有什么改进的必要。如果非要说改进的话,那就是你应该拆开这两个三元表达式。因为在num<0和num>255的时候会进行多余的判断和处理
if(num < 0)
   return 0;
else if(num > 255)
   return 255;
else
   return (byte)num;
bigbaldy 2014-03-20
  • 打赏
  • 举报
回复
已经很好了。。
bdmh 2014-03-20
  • 打赏
  • 举报
回复
够简单的了,还想怎样改

110,572

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧