|
27 | 27 | <meta property="og:site_name" content="Xuwen's Blog">
|
28 | 28 | <meta property="og:description" content="在编写代码时常使用且常忽视的性能问题进行总结。这篇文章将持续更新…">
|
29 | 29 | <meta property="og:locale" content="zh_CN">
|
30 |
| -<meta property="og:image" content="http://yoursite.com/images/banchmark2022021101.png"> |
31 |
| -<meta property="og:image" content="http://yoursite.com/images/banchmark2022021102.png"> |
| 30 | +<meta property="og:image" content="http://yoursite.com/images/benchmark-2022021101.png"> |
| 31 | +<meta property="og:image" content="http://yoursite.com/images/benchmark-2022021102.png"> |
32 | 32 | <meta property="article:published_time" content="2022-02-11T03:27:23.000Z">
|
33 |
| -<meta property="article:modified_time" content="2022-02-11T03:36:44.980Z"> |
| 33 | +<meta property="article:modified_time" content="2022-02-11T03:41:22.842Z"> |
34 | 34 | <meta property="article:author" content="zhouxuwen">
|
35 | 35 | <meta property="article:tag" content="Golang">
|
36 | 36 | <meta property="article:tag" content="json">
|
37 | 37 | <meta property="article:tag" content="string">
|
38 | 38 | <meta name="twitter:card" content="summary">
|
39 |
| -<meta name="twitter:image" content="http://yoursite.com/images/banchmark2022021101.png"> |
| 39 | +<meta name="twitter:image" content="http://yoursite.com/images/benchmark-2022021101.png"> |
40 | 40 |
|
41 | 41 | <link rel="canonical" href="http://yoursite.com/2022/02/11/Golang%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E7%AF%87/">
|
42 | 42 |
|
@@ -224,7 +224,7 @@ <h1 class="post-title" itemprop="name headline">
|
224 | 224 | <span class="post-meta-item-text">发表于</span>
|
225 | 225 |
|
226 | 226 |
|
227 |
| - <time title="创建时间:2022-02-11 11:27:23 / 修改时间:11:36:44" itemprop="dateCreated datePublished" datetime="2022-02-11T11:27:23+08:00">2022-02-11</time> |
| 227 | + <time title="创建时间:2022-02-11 11:27:23 / 修改时间:11:41:22" itemprop="dateCreated datePublished" datetime="2022-02-11T11:27:23+08:00">2022-02-11</time> |
228 | 228 | </span>
|
229 | 229 | <span class="post-meta-item">
|
230 | 230 | <span class="post-meta-item-icon">
|
@@ -285,11 +285,11 @@ <h2 id="字符串连接"><a href="#字符串连接" class="headerlink" title="
|
285 | 285 |
|
286 | 286 |
|
287 | 287 | <p>既然方法有这么多种,性能问题就会有差异,通过benchmark测试查看一下:</p>
|
288 |
| -<p><img src="/images/banchmark2022021101.png" alt="banchmark2022021101"></p> |
| 288 | +<p><img src="/images/benchmark-2022021101.png" alt="benchmark-2022021101"></p> |
289 | 289 | <p>可以看出copy和strings.Builder性能上是最好的,fmt.Sprintf是最差的,为什么呢?要知道golang 里面的字符串都是不可变的,每次运算都会产生一个新的字符串,所以会产生很多临时的无用的字符串,不仅没有用,还会给 gc 带来额外的负担,所以性能变差。而copy和strings.Builder根据长度预先分配内存,没有产生很多临时的无用的字符串。本质上就是以空间换时间。</p>
|
290 | 290 | <h2 id="json序列化"><a href="#json序列化" class="headerlink" title="json序列化"></a>json序列化</h2><p>json系列我们最常用的就是标准库里的encoding/json,但为提高性能可以使用一些第三方库替换。如json-iterator、easyjson等。</p>
|
291 | 291 | <p>性能提升多少呢?我们通过banchmark测试看一下:</p>
|
292 |
| -<p><img src="/images/banchmark2022021102.png" alt="banchmark2022021101"></p> |
| 292 | +<p><img src="/images/benchmark-2022021102.png" alt="benchmark-2022021101"></p> |
293 | 293 | <p>可以看到json-iterator和easyjson相比easyjson提升整整一倍。但第三方库有一定的维护成本,但数据量大的时候,使用第三方库也是值得的。</p>
|
294 | 294 |
|
295 | 295 | </div>
|
|
0 commit comments