Archive for July 2014

git pull --rebase

# 等於 git fetch + git merge
# 所以會多出一個多餘的 Merge branch 'xxx' into 'xxx' 的 commit
$ git pull origin master

# 把現在這個 branch 的 base 改成 origin master
# 會把現在這個 branch 接在 origin master 之後
$ git pull --rebase origin master

因為每一個 commit 都可以另外開一個 branch 去做事
每個 branch 的 base 就是當初它開出去的那個 commit
而 rebase 其實就是修改那個 base

所以如果不是太複雜的 branch
都建議用 git pull --rebase

ref:
http://blog.yorkxin.org/posts/2011/07/29/git-rebase
http://ihower.tw/blog/archives/3843

timeit / cProfile function in Python

timeit 預設是執行程式片段 1,000,000 次,然後取平均時間(秒)

from timeit import timeit
import cProfile


def func1(n):
    array = [str(x * x) for x in xrange(n)]
    return ', '.join(array)


def func2(n):
    array = (str(x * x) for x in xrange(n))
    return ', '.join(array)


print timeit('func1(10)', 'from __main__ import func1')
print timeit('func2(10)', 'from __main__ import func2')

# 不像 timeit,cProfile 並不需要 import
cProfile.run('func1(10)')

ref:
http://www.cnblogs.com/moinmoin/archive/2011/03/18/python-runtime-measuring.html
http://www.codedata.com.tw/python/python-tutorial-the-6th-class-2-performance-pycon-taiwan/