网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月08日漏签0天
c#吧 关注:188,366贴子:822,466
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 14回复贴,共1页
<<返回c#吧
>0< 加载中...

为什么我自己写的二分查找还不如遍历查找的Linq快呢

  • 只看楼主
  • 收藏

  • 回复
  • SHW
  • c#探索者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
注释掉的就是LINQ的版本
profiler里看到linq方案每帧耗时80ms左右,我的二分查找在100ms
这还只是每帧的差距,总性能差别还是挺明显的 为什么呢


  • SHW
  • c#探索者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
附两个关联数据结构的定义
目的是根据特定值查区间,大佬们有什么好的办法么



2025-06-08 00:04:15
广告
  • 芝士鼠鼠
  • c#初学者
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
使用java提升效率


  • 不一样的惩
  • c#大牛
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
官方api通常会优化字节码


  • 需要人捶
  • c#攻城狮
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Linq的每次循环里只有一次匹配,而你的二分法里每次循环多做了一次计算mid值的过程;至于总体性能差距我想应该是你测试的数据太少了,而且第一个匹配项太靠前了,如果你的测试数据比较大,并且第一个匹配项较靠后,二分法性能就体现出来了


  • sunyubokkkkk
  • c#学者
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用.net7测试了一下,从十到一亿数据,速度基本都是二分法>foreach>linq,在被查找集中在列表开头的时候foreach>二分法>linq。但无论如何linq都是最慢的,debug和release下都是,打数据量时二分法比linq快几个数量级。当然测试数据都是理想的连续整数,实际情况会更复杂。楼主的情况可能是其他原因,建议把相关代码单独摘出来测试一下以排除其他因素的影响。


  • 在你身后
  • c#大菜鸟
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你这个二分是不是有点问题,每次left和right改变1?你这和遍历有啥区别,你要每次都去找中间值和边界值的下一个中间值啊


  • 6带你飞6
  • c#爱好者
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你的代码再快也还是c#,linq可不一定


2025-06-07 23:58:15
广告
  • hh12afdf
  • c#探索者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
相信官方api,我也写过一个查找子字符串的方法,以为自己写的已经很快了,用了官方API,发现更快,而且差距明显。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 14回复贴,共1页
<<返回c#吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示