タグ

2020年5月23日のブックマーク (2件)

  • CPU律速なRuby/Pythonコードはデフォルト設定のdocker上で遅くなる - まめめも

    English version 要約 dockerはデフォルトでセキュリティ機構(Spectre脆弱性の対策)を有効にします。この影響で、RubyPythonのようなインタプリタは速度が劣化します。特にCPU律速なプログラムで顕著に遅くなります(実行時間が倍くらいになることがあります)。 現象 Rubyで1億回ループするコードを、直接ホスト上で実行する場合と、docker上で実行する場合で実行時間を比較してみます。 直接ホスト上で実行した場合: $ ruby -ve 't = Time.now; i=0;while i<100_000_000;i+=1;end; puts "#{ Time.now - t } sec"' ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux] 1.321703922 sec docker

    CPU律速なRuby/Pythonコードはデフォルト設定のdocker上で遅くなる - まめめも
  • 初学者のためのPython講座 オブジェクト指向編7 カプセル化 - Qiita

    オブジェクト指向の重要概念の一つがカプセル化です。カプセル化とは、プログラムの外部からの操作を制御し、プログラムの独立性を保つための仕組みです。 テレビのリモコンに例えると、ユーザーはリモコンの単純なボタン操作によって、チャンネルを変える、ボリュームを下げるなどの操作ができます。ユーザーは内部の複雑なプログラムや回路を意識する必要はなく、誤った操作も起こしにくくなります。また、ユーザーが好き勝手にプログラムを書き換えたり、内部の回路に触れて改造したり、といった故障の原因を未然に防ぎます。 このようにオブジェクトの内部構造を隠蔽し、公開されたインターフェースによって外部からの操作を制御する仕組みがカプセル化です。使える機能を制限することで、ユーザーはどの機能を使えばいいかが分かりやすく、内部のプログラムに干渉しない・させないことで、大規模なプログラムでも複雑にならず、安定性が担保されます。

    初学者のためのPython講座 オブジェクト指向編7 カプセル化 - Qiita