网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数: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
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示