小编Tyr*_*Tyr的帖子

为什么golang比scala慢?

在这个测试中,我们可以看到golang的性能有时比scala慢得多.在我看来,由于golang的代码直接编译为c/c ++兼容的二进制代码,而scala的代码被编译为JVM字节代码,golang应该具有更好的性能,特别是在基准测试的这些计算密集型算法中.我的理解不正确吗?

http://benchmarksgame.alioth.debian.org/u64/chartvs.php?r=eNoljskRAEEIAlPCA48ozD%2Bb1dkX1UIhzELXeGcih5BqXeksDvbs8Vgi9HFr23iGiD82SgxJqRWkKNctgkMVUfwlHXnZWDkut%2BMK1nGawoYeDLlYQ8eLG1tvF91Dd8NVGm4sBfGaYo0Pok0rWQ%3D%3D&m=eNozMFFwSU1WMDIwNFYoNTNRyAMAIvoEBA%3D%3D&w=eNpLz%2FcvTk7MSQQADkoDKg%3D%3D

performance scala go

20
推荐指数
4
解决办法
3万
查看次数

为什么这段代码会在go(大约81M)中生成非常大的可执行文件?

我是golang的新手.我写了这样的代码:

package main

import (
    "fmt"
)

const (
    BIG_NUM = 10 * 1000 * 1000
)

type BigData [BIG_NUM]uint64

func (self BigData) String() string {
    return fmt.Sprintf("%d\n", self[0])
}

func (self *BigData) Clear() {
    *self = BigData{}
}

func main() {
    data := new(BigData)
    fmt.Println(data)
}
Run Code Online (Sandbox Code Playgroud)

编译后,可执行文件大约是81M:

$ ls -l
-rwxr-xr-x  1 tchen  522017917  81533376 Dec 19 08:44 test
-rw-r--r--  1 tchen  522017917       290 Dec 19 08:44 test.go
Run Code Online (Sandbox Code Playgroud)

当我删除Clear()函数时,可执行文件将恢复正常大小.那么为什么这个Clear()函数生成如此大的可执行文件?它应该在运行时调用,而不是编译时间,对吧?

- - - - - - 进一步的调查 - - - …

go

14
推荐指数
1
解决办法
866
查看次数

为什么我的mongodb fileSize比db.stats()中的storageSize大得多?

我有一个名为log_test1的数据库,只有1个上限的收集日志.封顶集合的最大大小为512M.插入200k数据后,我发现db的磁盘使用率为1.6G.使用db.stats(),我可以看到storageSize是512M,正确,但我的实际fileSize是1.6G,为什么会发生这种情况?如何控制磁盘大小只是我的上限集合大小加上索引大小?

> use log_test1
switched to db log_test1
> db.stats()
{
    "db" : "log_test1",
    "collections" : 3,
    "objects" : 200018,
    "avgObjSize" : 615.8577328040476,
    "dataSize" : 123182632,
    "storageSize" : 512008192,
    "numExtents" : 3,
    "indexes" : 8,
    "indexSize" : 71907920,
    "fileSize" : 1610612736,
    "nsSizeMB" : 16,
    "dataFileVersion" : {
        "major" : 4,
        "minor" : 5
    },
    "ok" : 1
}
Run Code Online (Sandbox Code Playgroud)

diskspace mongodb

13
推荐指数
1
解决办法
5139
查看次数

为什么模式匹配性能不如灵丹妙药中的ifelse/cond好多少?

我被告知erlang beam通过模式匹配调整了很多,因此性能比条件表达式要好得多.我在elixir中进行了测试,并使用benchfella进行基准测试.但是,我发现与if/cond相比,模式匹配性能几乎与性能水平相同.

$ mix bench -d 10
Settings:
  duration:      10.0 s
  mem stats:     false
  sys mem stats: false

[12:30:08] 1/3: PatternMatchBench.if else performance
[12:30:28] 2/3: PatternMatchBench.cond performance
[12:30:47] 3/3: PatternMatchBench.pattern match performance
Finished in 57.5 seconds

PatternMatchBench.if else performance:            10000   1723.24 µs/op
PatternMatchBench.cond performance:               10000   1723.36 µs/op
PatternMatchBench.pattern match performance:      10000   1726.95 µs/op
Run Code Online (Sandbox Code Playgroud)

下面是核心代码,它基本上将数据格式化为不同情况下的字符串.整个项目可以通过https://github.com/tyrchen/pattern_match获得.

defmodule Ifelse do
  def process(data) do
    if is_list(data) do
      data
      |> Enum.map(fn(entry) ->
          if is_tuple(entry) do
            {k,v} = entry
            "#{k}: #{v}" |> transform
          else …
Run Code Online (Sandbox Code Playgroud)

erlang elixir

4
推荐指数
1
解决办法
1863
查看次数

为什么我的nodejs脚本没有退出shell?

我的代码看起来像这样:

#!/bin/env node

var collection = require('mongojs')('test').collection('test');

collection.findOne({}, function(err, doc) {
    console.log(err, doc);
});
Run Code Online (Sandbox Code Playgroud)

当我运行此脚本时,它显示:

$ node test.js
null null
Run Code Online (Sandbox Code Playgroud)

但剧本没有退出.我需要"CTRL + C"才能退出.任何人都知道如何解决它?

[更新]

我发现如果我使用原生mongodb而不是mongojs,那就没问题:

#!/bin/env node

var client = require('mongodb');

client.connect('mongodb://127.0.0.1:27017/hatch', function(err, db) {
    if (err) throw err;
    var collection = db.collection('documents');

    collection.find().toArray(function(err, results) {
        console.dir(results);
        db.close();
    });
});
Run Code Online (Sandbox Code Playgroud)

这是一个mongojs问题吗?

node.js mongojs

0
推荐指数
1
解决办法
158
查看次数

标签 统计

go ×2

diskspace ×1

elixir ×1

erlang ×1

mongodb ×1

mongojs ×1

node.js ×1

performance ×1

scala ×1