所以我第一次在我的mac上玩docker。我在标准教程中使用了boot2docker
,我在ubuntu映像中开始提示。
docker pull ubuntu
docker run -i -t ubuntu /bin/bash
当我在码头工作时,我开始了我的第一个实验,看看性能是否会下降。从命令行我将使用python timeit
模块快速检查一些基本的性能指标。
$ python3.4 -m timeit '"-".join(str(n) for n in range(100))'
10000 loops, best of 3: 37.7 usec per loop
$ python3.4 -m timeit '"-".join([str(n) for n in range(100)])'
10000 loops, best of 3: 34.2 usec per loop
$ python3.4 -m timeit '"-".join(map(str, range(100)))'
10000 loops, best of 3: 26.2 usec per loop
Docker Python结果
> python3 -m timeit '"-".join(str(n) for n in range(100))'
10000 loops, best of 3: 30 usec per loop
> python3 -m timeit '"-".join([str(n) for n in range(100)])'
10000 loops, best of 3: 26.9 usec per loop
> python3 -m timeit '"-".join(map(str, range(100)))'
10000 loops, best of 3: 20.2 usec per loop
看起来奇怪的是,在我的mac上运行的docker ubuntu实际上比mac上的python运行python代码更快。为什么会出现这种情况有什么原因吗?
编辑我可以确认两个python版本都以64位运行。
Mac Pythonpython3 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
7fffffffffffffff True
Ubuntu Python
python3.4 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
7fffffffffffffff True
答案 0 :(得分:1)
这更多地是关于操作系统的差异而不是码头工人的性能。测量应用程序的性能可能很棘手。
最重要的是,OS X有大量的进程可以与您的测试竞争,而OS X可能不会给您的测试带来高优先级。
在大多数情况下,容器应该与原生环境(有时更好)一样好。但是,您的测试应该使容器能够正常工作。当您的应用程序进行系统调用和访问I / O时,Docker将需要增加开销,因此这些应该都包含在您的测试中。
IBM去年写了一篇关于Linux Container vs. Native env问题的论文。