Skip to content

Latest commit

 

History

History
51 lines (44 loc) · 1.78 KB

steven_lv-20180707.md

File metadata and controls

51 lines (44 loc) · 1.78 KB

ARTS week two

Algorithm

Insertion Sort

  • 把元素都放入一个集合,这个集合没有�排序过
  • 从集合中�拿出一个�元素,插入一个新的数组
  • 从集合中拿出下个元素,插入这个新数组,�这个新插入的元素要么在上一个元素的前面,要不在后面。因此,在新数组的两个元素都被排过序了。
  • 重复上面的过程,直到所有的元素都插入了新的数组
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
}

Review

Article: Performance Impact of Removing OOBGC

  1. Ruby 在 2.1 版本以后 GC 做了重大改进,Unicorn 优化的 GC 方案 OOBGC 未必适用于新的版本,可以去掉了
  2. Ruby 的 GC 改进包括:1. Generational Collector 2. �Incremental marking 3. Lazy Sweeping
  3. Github 在去掉 OOBGCKubernetes cluster CPU utilization 降低了 10%, 缩短了 25% 的 response time
  4. 不是没有代价: memory usage will increase on average 这个还需要继续观察

�Technology

  1. Rails 里用 try 来减少 nil 的判断
  @person && @persion.name
  @person ? @person.name : nil
  # 用 try 改写
  @person.try(:name)
  @person.try { |p| p.name }
  1. 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

�Share

What’s New in Swift 4.2?