YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Japanese subtitles

← 07xps-10 The Living and the Dead Solution

Get Embed Code
3 Languages

Showing Revision 1 created 10/23/2014 by Udacity.

  1. この宿題はデッドコードを取り除く問題でした
  2. 注目している関数の最後のreturnに
  3. 何の影響もないのがデッドコードです
  4. やっていきましょう
  5. まずコードの一部を作ります
  6. このタプルの最初の部分が
  7. 代入される変数で
  8. 次が代入される式です
  9. この場合aに1が代入され
  10. bにaと1を計算したものが入りcに2が代入されます
  11. この演算が何であるかは特に気にしません
  12. どのような演算が行われたかはどうでもよいのです
  13. 変数に何かが行われたということが重要です
  14. 何かが行われていて
  15. それが同じものになるとしても
    今はどうなるかわかりません
  16. このような形の断片があれば古いコード片や
    最適化前のコード片として保存します
  17. それがこの関数の最初の引数です
  18. returnedは最終的な返り値
  19. つまり最後にreturnされる式に含まれる
    変数のリストです
  20. それが最後に返されるものに入っていれば
    ルールどおり生きています
  21. 生きた変数についての新しいリストを作ります
  22. まずそれを空のリストnew_fragmentとします
  23. 変数liveは生きた変数だと
    知っているものを入れるので
  24. まず返される変数を代入します
  25. そしてそれぞれの文ごとに
    コード片を後ろから始めます
  26. つまりreturn文から始めて一番上に戻るまで
  27. タプルの最初の要素が
  28. 既にliveに含まれているかどうか調べます
  29. もし生きている変数なら
  30. その文を新しいコード片に含めますが
  31. そうでない場合そのまま無視します
  32. 今度は生きた変数のリストを取り
  33. 代入される変数を取り除きます
  34. それをすべて取り除き
  35. 生きた変数のリストを
    右側にある変数に加えて更新します
  36. これを繰り返し一番上の行に達するまで続けます
  37. それが終わったら
    新しいコード片が古いコード片と同じかを調べます
  38. 同じなら新しいコード片を返します
    何も変えませんでした
  39. ここで最適化を止めて終わりです
  40. 同じでなければ最適化ができるかもしれないので
    新しいコード片からもデッドコードを除去します
  41. 最適化が続けられるかもしれないので
  42. 再帰的に自身を呼び出し続け
    更新がなくなるまで続けます
  43. 今度もデッドコードを削除したらどうなるのか
  44. 手計算したもので確かめます
  45. 簡単に読めるはずなので すべては解説しません
  46. テストを走らせると それぞれTrueになります
  47. かなり最適化をしたコードになりました
  48. 考えることは多いですが
    多くのコードを取り除ける可能性があるので
  49. これはとても有効な最適化の手法です