ARTS week two
- 把元素都放入一个集合,这个集合没有�排序过
- 从集合中�拿出一个�元素,插入一个新的数组
- 从集合中拿出下个元素,插入这个新数组,�这个新插入的元素要么在上一个元素的前面,要不在后面。因此,在新数组的两个元素都被排过序了。
- 重复上面的过程,直到所有的元素都插入了新的数组
func insertionSort(_ array: [Int]) -> [Int] {
var a = array
for x in 1..<a.count {
var y = x
let temp = a[y]
while y > 0 && temp < a[y - 1] {
a[y] = a[y - 1] // 1
y -= 1
}
a[y] = temp // 2
}
return a
}
Article: Performance Impact of Removing OOBGC
Ruby
在 2.1 版本以后 GC 做了重大改进,Unicorn
优化的GC
方案OOBGC
未必适用于新的版本,可以去掉了- Ruby 的 GC 改进包括:1.
Generational Collector
2. �Incremental marking
3.Lazy Sweeping
- Github 在去掉
OOBGC
后Kubernetes cluster CPU utilization
降低了 10%, 缩短了 25% 的response time
- 不是没有代价:
memory usage will increase on average
这个还需要继续观察
- �
Rails
里用try
来减少nil
的判断
@person && @persion.name
@person ? @person.name : nil
# 用 try 改写
@person.try(:name)
@person.try { |p| p.name }
Rails
里用tap
debug �method chain
%w(x y z).push('a').shift.upcase.next # => "Y"
%w(x y z).push('a').shift.tap {|x| p x }.upcase.next