惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
CXSECURITY Database RSS Feed - CXSecurity.com
D
Docker
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
Jina AI
Jina AI
小众软件
小众软件
Last Week in AI
Last Week in AI
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
美团技术团队
爱范儿
爱范儿
V
V2EX
大猫的无限游戏
大猫的无限游戏
人人都是产品经理
人人都是产品经理
J
Java Code Geeks
博客园 - 司徒正美
博客园 - 叶小钗
S
SegmentFault 最新的问题
量子位
S
Secure Thoughts
月光博客
月光博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
O
OpenAI News
L
LINUX DO - 最新话题
罗磊的独立博客
SecWiki News
SecWiki News
雷峰网
雷峰网
Recent Announcements
Recent Announcements
V2EX - 技术
V2EX - 技术
T
Tailwind CSS Blog
H
Hacker News: Front Page
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
云风的 BLOG
云风的 BLOG
Schneier on Security
Schneier on Security
T
The Blog of Author Tim Ferriss
IT之家
IT之家
博客园 - 聂微东
腾讯CDC
N
News | PayPal Newsroom
P
Proofpoint News Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The GitHub Blog
The GitHub Blog
Hacker News: Ask HN
Hacker News: Ask HN
aimingoo的专栏
aimingoo的专栏
Webroot Blog
Webroot Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
K
Kaspersky official blog

LeetCode

二分查找 mid 什么时候要加 1 - V2EX 大家知道哔站或者 Youtube 上有木有出 leetcode 刷题讲解视频的博主? - V2EX leetcode 到达 1000 题了🎉 - V2EX 为什么打开 leetcode 中文网要验证手机号啊,能不验证吗 - V2EX 为什么要刷算法? - V2EX 靓仔们,刷的第一个道 leetcode 题是什么哇 - V2EX Leecode 组队刷题 - V2EX 2018 年之前大家怎么准备的面试? - V2EX 142. 环形链表 II 我这么写为什么有个 case 无法通过 - V2EX 各位都是怎么刷题的 - V2EX leetcode 第 402 题,移除 K 位数字 的疑问 - V2EX 你力扣做几题了?做题数还能衡量水平吗?我做了很多题还是很菜 - V2EX leetcode-cn 年费会员 20%off - V2EX Leetcode 刷题记录 - V2EX LeetCode 有史以来最简单的题目 - V2EX 一直很好奇 leetcode 是怎么判断随机算法的正误的 - V2EX 你们会在意执行用时和内存消耗吗? - V2EX leetcode 502badgateway 了? - V2EX 开心,参加 Weekly Contest 270 不到 1 小时解决了 3 题, Q3 最后几十秒提交一次性通过 - V2EX 刷题,组队 - V2EX 早安刷题 - V2EX leetcode 33 解法求解释 - V2EX 大家刷题,是去中文的 leetcode-cn.com,还是去 leetcode.com?貌似还有一个山寨的 lintcode - V2EX 刷同一类题型真是很不错的方法 - V2EX leetcode 1758 - V2EX 3 个月 了 刷了 51 道题 平均每道题 3 种左右的方法 区间合并 断断续续想了 2 天 执行时间竟然 100% 两次提交 代码没有变动 竟然时间还不一样 一起来刷题 - V2EX 30 天 LeetCode 从 100 题刷到 200 题,再次发帖留念 - V2EX 被今天的 LeetCode 打卡题搞吐了,思路和代码都和题解基本一样,但就是一直超时不过 - V2EX 刷题很痛苦 需要自己找方法刺激过程 别放弃 - V2EX leetcode 有排名了,每天起来看自己排名上涨也是一种乐趣 认认真真地刷题 提高代码能力和思维能力 - V2EX 刷了 10 题 leetcode,感觉身体被掏空 - V2EX 大家觉得 backtracking 难吗? - V2EX 国内本科学生,想问问大佬们 Leetcode 推荐美国站还是国内站 - V2EX 华为 OD 机试题:给定两个数 0<S, N<100000, S 为数列总和, N 为数列长度,求连续正整数列 LeetCode 2020 感恩节促销开始 - V2EX 求分享 416 的衍生问题的解题思路 LeetCode 有关 树 的题到底怎么套输入 - V2EX 有没有正在刷 LeetCode 的小伙伴们? - V2EX 九章算法 | 字节跳动面试题:用 Rand7()实现 Rand10() - V2EX 长文慎点! Kaggle 比赛的 top2%和金牌到底差距有多大? - V2EX 微软面试真题+面试官改编 leetcode 思路(哈希篇-加更) - V2EX 微软面试真题+面试官改编 leetcode 思路(链表篇) - V2EX
LeetCode 中使用 StringBuilder 连接字符串为什么会比用+号连接快?
kuretru · 2021-01-10 · via LeetCode

今日 LeetCode 的每日一题,代码很简单,官方的题解如下:

class Solution {
    public List<String> summaryRanges(int[] nums) {
        List<String> ret = new ArrayList<String>();
        int i = 0;
        int n = nums.length;
        while (i < n) {
            int low = i;
            i++;
            while (i < n && nums[i] == nums[i - 1] + 1) {
                i++;
            }
            int high = i - 1;
            StringBuffer temp = new StringBuffer(Integer.toString(nums[low]));
            if (low < high) {
                temp.append("->");
                temp.append(Integer.toString(nums[high]));
            }
            ret.add(temp.toString());
        }
        return ret;
    }
}

可以看到官方使用 StringBuffer 来连接字符串,在不需要考虑线程安全的环境,毫无疑问可以使用 StringBuilder 来代替,但是问题在于,为什么使用+号来连接的效果会比 StringBuilder 及 StringBuffer 差?

String temp = Integer.toString(nums[low]);
if (low < high) {
temp += "->" + Integer.toString(nums[high]);
}
ret.add(temp);

两者的差别为:
StringBuilder/StringBuffer:执行用时:0 ms, 在所有 Java 提交中击败了 100.00%的用户
+号连接:执行用时:8 ms, 在所有 Java 提交中击败了 70.02%的用户
同样的代码在本地各循环 1000 万次的结果为
JDK 1.8(与 LeetCode 相同):7708ms vs 7287ms
JDK 11:7320ms vs 4511ms