V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  corningsun  ›  全部回复第 3 页 / 共 32 页
回复总数  630
1  2  3  4  5  6  7  8  9  10 ... 32  
这个文章总结的挺好,OP 可以参考下。

https://post.smzdm.com/p/a90zg47o/

如果是我的话,会先上一个能科学的路由器,看看实际信号情况。如果哪个房间网络差,再上有线 mesh
@cloudzhou 小霸王学习机就有,哈哈哈
77 天前
回复了 corningsun 创建的主题 汽车 我自己在使用的一些汽车好物分享
@cssk 从来没用过,哈哈哈
首先推测 checkExistRule(List<String[]> keywordRule, String text) 的实现有问题,OP 的实现只会用到第一条规则。
其次 String 的 contains 匹配是数组下标查找,也是一层循环,效率不高。
建议是先分词,得到 哈希数组,然后再比较,示例代码如下:


public static boolean checkExistRuleV2(List<Set<String>> keywordRule, Set<String> textSet) {
return keywordRule.stream().anyMatch(textSet::containsAll);
}


Benchmark 压测结果如下:循环 10000 次的时间,从 13 ms 降低到 0.5 ms

Benchmark Mode Cnt Score Error Units
Print1024Test.checkExistRule avgt 6 13.877 ± 0.148 ms/op
Print1024Test.checkExistRuleV2 avgt 6 0.528 ± 0.035 ms/op

单元测试代码

package org.corning.v2ex.year2024;

import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.junit.jupiter.api.Test;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
import org.openjdk.jmh.runner.options.TimeValue;

import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;

public class Print1024Test {

public static List<String[]> keywordRule = Lists.newArrayList(
new String[]{"鼎赛龙", "男士春夏", "D-FINING", "深灰色", "锥形牛仔裤"},
new String[]{"DIESEL", "男士春夏", "DFINING", "深灰色", "锥形牛仔裤"}
);
public static String text = "#DIESEL 大牌好友# @宋雨琦_G-I-DLE 演绎#DIESEL2023 秋冬系列# 牛仔坠饰 D-VINA 包袋。渐变丹宁渲染不羁格调,另类包型注解无畏想象";
public static List<Set<String>> keywordRuleSet = keywordRule.stream()
.map(Sets::newHashSet)
.collect(Collectors.toList());

// 这里可能需要更好的分词手法,trim / 去掉逗号等
public static Set<String> textSet = Arrays.stream(text.split(" ")).collect(Collectors.toSet());

@Test
public void runBenchmarks() throws Exception {
Options options = new OptionsBuilder()
.include(this.getClass().getName() + ".*")
.mode(Mode.AverageTime)
.warmupTime(TimeValue.seconds(1))
.warmupIterations(6)
.threads(1)
.measurementIterations(6)
.forks(1)
.shouldFailOnError(true)
.shouldDoGC(true)
.build();
new Runner(options).run();
}


@Benchmark
@Test
@OutputTimeUnit(TimeUnit.MILLISECONDS)
public void checkExistRule() {
for (int i = 0; i < 10000; i++) {
Print1024.checkExistRule(keywordRule, text);
}
}

@Benchmark
@Test
@OutputTimeUnit(TimeUnit.MILLISECONDS)
public void checkExistRuleV2() {
for (int i = 0; i < 10000; i++) {
Print1024.checkExistRuleV2(keywordRuleSet, textSet);
}
}

}
79 天前
回复了 toBeRich 创建的主题 汽车 决赛圈,买 s60 还是领克 08
有娃后就满载 6 人了? 这两个车还够用吗
@ramirezyolis808 正确答案
80 天前
回复了 unt 创建的主题 职场话题 今天才知道年终奖一次性计税的惊天 bug
新版 “皇帝的新装”

大家都明白,但仍然将错就错。
80 天前
回复了 testy 创建的主题 生活 你们结婚后会上交工资卡吗?
@LING97 #58 祝早点领证
80 天前
回复了 testy 创建的主题 生活 你们结婚后会上交工资卡吗?
@lift 哈哈哈,牛,高级版 “过家家”
80 天前
回复了 aaronlau 创建的主题 问与答 有没有已经在春运路上的朋友?
@phpdev 高德啊
80 天前
回复了 aaronlau 创建的主题 问与答 有没有已经在春运路上的朋友?
2 月 3 号早上 2:30 出发,480 公里,基本没超速,只休息了一次,6.5 小时
我喜欢凌晨出发,这样出上海非常快
最好提前加油,备好吃喝。进服务区很多都要排队,我进去加个油花了 30 分钟,少去一次能节省很长时间。
有一小段是雨夹雪,但是道路没有结冰。
一定要注意保持车距,多备刹车,还有提前给后车打双闪。

https://i.imgur.com/2O2an4g.png
82 天前
回复了 wanmyj 创建的主题 程序员 简历里要不要写自己的折腾经历
写上吧,面试看缘分,如果刚好面试官年轻时也折腾过这些,那就是加分项。
但是要提前准备被问到要怎么回答,你的 Blog 要有一些有价值的内容。
82 天前
回复了 firhome 创建的主题 程序员 春节:如何规划自驾路线?
@bitmin +1 我也是经常凌晨 2-3 点出发,这时候人最少。
83 天前
回复了 ggp1ot2 创建的主题 问与答 请问国外,闯红灯的多吗?
浦东,偶尔有,但是没这么夸张吧。
84 天前
回复了 sdcxzx 创建的主题 问与答 有没有可以监控 12123 号牌号段公布的工具
自选靓号很难,选生日,纪念日之类的才有意义。

或者很有特色但 99% 的人都不会选的号,比如 NB250 之类

不如赌一把,现场机选,可能有靓号。
1  2  3  4  5  6  7  8  9  10 ... 32  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3425 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 42ms · UTC 00:41 · PVG 08:41 · LAX 17:41 · JFK 20:41
Developed with CodeLauncher
♥ Do have faith in what you're doing.