並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 7 件 / 7件

新着順 人気順

遅延評価の検索結果1 - 7 件 / 7件

  • JavaScript で遅延評価を導入して起動を高速化した話

    この記事は、JavaScript で Flash Player の実現を頑張った(もしくは現在進行系で頑張っている)人たちの集う Flash Advent Calendar 2020 に参加しております。 Flash Player を JavaScript で実装していた際に、現場から「起動の高速化」という難しい要求をもらった際、「遅延評価」を導入したところ大変効果がありました。今回、その遅延評価について簡単なご紹介をしたいと思います。 Flash Player 起動までのステップ 当時 Flash Player を JavaScript で提供していた際、当時のスマートフォン端末においてロード完了から最初の画面が出るまで大体 150ms くらいかかっていました。普通の Web ページであれば 150ms はロード時間の中に吸収され許容範囲になる可能性が高いのですが、当時 Flash Pl

    • セグメント木を徹底解説!0から遅延評価やモノイドまで | アルゴリズムロジック

      セグメント木とは セグメント木とは、完全二分木(全ての葉の深さが等しい木)によって実装された、区間を扱うのに適したデータ構造のことです。 区間に対する操作を対数時間 O(log n) で行えることが特徴で、競技プログラミングなどで頻出となっています。 セグメント木でできること セグメント木は、区間に対する操作やクエリを行うことができます。 特に、 区間上の値を更新する任意の区間上の最小値や合計値などを取得する などが対数時間でそれぞれ行えるのが強みです。 区間上の合計値などは、累積和などを使えば前処理 O(N) ・クエリ O(1) で取得することもできます。しかし、区間上の値の更新と、合計値の取得が入り乱れるような時は、セグメント木の方が有効になることが多いです。 以下では説明のために、区間上の最小値 Range Minimam Query(RMQ) を扱うセグメント木を例として説明します

        セグメント木を徹底解説!0から遅延評価やモノイドまで | アルゴリズムロジック
      • 遅延評価でデバッグが困難になる状況

        先日、Haskell 界隈で遅延評価によってデバッグがし辛いのはどんな時かと言う話があった。見た感じ、遅延評価によってデバッグのしにくさはそんなに変わらないと言う意見が結構あり、個人的には衝撃だった。僕自身は遅延評価にだいぶヘイトを溜めてる人なので、どういう状況でデフォルト遅延評価が嫌かを実感できる問題を作った。この問題を解けば、きっとヘイトを共有できるはずってわけ。一緒に地獄に落ちような。 なお、かなり主観に寄っていて、結構書き殴ってる部分が多いので、厳密な議論をするにはあまり良い例ではないかもしれない。個人的には、備忘録的な意味合いも強くて、今まで詰まったやつをまとめておくかみたいな感じでもある。 先に結論を書いておくと、 プログラム自体が大きくて [1] 複雑な制御構造をしていて (optional) 以下のいずれかの条件を満たす 遅延評価を機能として使っている デバッグ対象が効率に

          遅延評価でデバッグが困難になる状況
        • 長年break文を使い続けたプログラマーが、break文の無いElixirを学んで、遅延評価にたどり着いた話 - Qiita

          長年break文を使い続けたプログラマーが、break文の無いElixirを学んで、遅延評価にたどり着いた話 はじめに 私はPythonのプログラムを使う時、breakを使う事がよくあります。 繰り返し処理の中で、繰り返しを中断したい状況になったら、直ぐに中断できて便利ですよね Elixirには、繰り返し文(Pythonのfor, while等)がありません。なので繰り返しを中断するためのbreak文がありません。 Elixirでは、どうしているか、例題を設定して、Elixirの場合の記述を書いてみます。 課題1 heavy_process()があります。 "heavy!"と表示します。 trueかfalseを返す関数です。 これを10回実行して10回ともtrueが返ってきたら、true, 一度でもfalseが返ったらfalseを返す関数を作成する。 シンプルな実装 def get_res

            長年break文を使い続けたプログラマーが、break文の無いElixirを学んで、遅延評価にたどり着いた話 - Qiita
          • 遅延評価と機械学習

            最近「なぜ関数プログラミングは重要か」という文書の存在を知りました。関数型プログラミング界隈ではかなり有名な文書のようだったので私も読んでみたのですが、話題の一つとして「遅延評価がプログラムのモジュール化を可能にし、生産性を高める」という話が事例とともに説明されており、とても勉強になりました。まだまだ理解しきれてはいませんが…… 本記事では、「なぜ関数プログラミングは重要か」に触発された私が、試しに機械学習のパイプライン構築に遅延評価を適用してみた事例を紹介します。読者のターゲットは普段Pythonで機械学習に触れているデータサイエンティストの方です。本記事を通して、遅延評価を使うと機械学習の学習処理ような「停止条件を満たすまでforループを回す」系の処理をうまくモジュール化できることを実感していただければ幸いです。一方で、例えばC#のLINQやJavaのStream APIなど (私はよ

              遅延評価と機械学習
            • 線形代数ライブラリEigenの遅延評価について - yuki-koyama's blog

              EigenはC++で書かれた線形代数ライブラリである。特徴の一つとして、式の実装にtemplate機能を活用している点があり、これにより 遅延評価 (lazy evaluation) を実現している。遅延評価を適切に使うことで、計算コストを削減できることがある。 Eigen Eigenの遅延評価については公式ドキュメントの次のページが詳しいため、本記事では厳密性・網羅性よりも概要の理解しやすさを重視する。 Eigen: Lazy Evaluation and Aliasing なお、以下のコード例では using namespace Eigen; が暗黙的に実行されているとする。 Eigenにおける遅延評価 演算の返り値の型に注目する 行列を表す MatrixXd 型の変数 a があり、その転置を表現するために MatrixXd a = ...; ... = a.transpose();

                線形代数ライブラリEigenの遅延評価について - yuki-koyama's blog
              • 【革命的な学習メソッド】必要になったら勉強する「遅延評価勉強法」で勉強の効率を最大限にアップ! - 男子社会人のひとりよがり

                こんにちは!わたMANです。 私は学生時代の頃、勉強が大の苦手でした。 中学校の試験の成績も学年120人ぐらいいましたが、順位が100番目ぐらいでいわゆる「落ちこぼれタイプ」の学生でした。 高校は私立単願、大学は指定校推薦で入ったので受験勉強という勉強はほとんどしていません。 私は、なぜそこまで勉強が嫌いだったかというと、「何のために勉強しているのか分からなかったから」です。 大人になってから使うか分からないのに勉強したところで、絶対頭に入らないと思いました。 そんな私でしたが、大人になって勉強した知識がすぐ活用できるようになるため、今は平日は毎日5時間、休日は10時間ぐらい勉強しています。 勉強内容としては、「プログラミング・ビジネス・経済・世の中の仕組み」などにまつわることです。 勉強が大の苦手だった私が使った勉強法は「遅延評価勉強法」というものです。 この学習メソッドのおかげて、あれ

                  【革命的な学習メソッド】必要になったら勉強する「遅延評価勉強法」で勉強の効率を最大限にアップ! - 男子社会人のひとりよがり
                1