Skip to content

Instantly share code, notes, and snippets.

@sile
sile / README.md
Last active April 1, 2024 07:33
Optunaを使ってFFmpegのエンコードパラメータを最適化してみる

概要

  • Optunaというハイパーパラメータ最適化ツールを使って、FFmpegでの動画エンコードパラメータの最適化を試してみた結果のメモ
  • 具体的には、決められた制約(後述)下で、画質(SSIM)を最大化するようなパラメータ群を自動で見つけ出すのが目的
  • 結果としては、
    • 画質的には、FFmpegが提供しているプリセットの中で二番目に重いもの(slower)より若干良い程度のパラメータ群が見つかった
    • また、Optunaが見つけたパラメータ群の方がslowerに比べて、CPU負荷が小さかった

方針

@sile
sile / 0_raft.md
Last active March 8, 2024 09:31
Raft(分散合意アルゴリズム)について
@sile
sile / time-clocks.md
Last active January 18, 2024 07:50
『Time, Clocks, and the Ordering of Events in a Distributed System』の要約

Time, Clocks, and the Ordering of Events in a Distributed System

http://research.microsoft.com/en-us/um/people/lamport/pubs/time-clocks.pdf の要約。

著者はレスリー・ランポート (Leslie Lamport), 1978年。

分散アルゴリズムの書籍や論文でお馴染みの、分散システムにおけるイベント群の順序や時刻の概念を説明している論文。

! が先頭についている箇所は、要約者による(いい加減な)注釈。

@sile
sile / rdbms-6.md
Last active November 9, 2023 00:43
『RDBMS解剖学』の第六章

六章 物理プランの生成

1. この章のテーマ

物理プランの生成および最適化がテーマ。

物理プラン:

  • 「SQLを解釈実行するパーツ」=> 「プランナ」=> 「物理プラン」
  • 論理プランの次のフェーズに位置する
@sile
sile / multi_process_storage.py
Last active October 29, 2023 21:55
An Optuna storage that uses multiprocessing module for inter process communication
import copy
from datetime import datetime
import multiprocessing
from optuna import distributions # NOQA
from optuna.storages import base
from optuna.storages.base import DEFAULT_STUDY_NAME_PREFIX
from optuna import structs
from optuna import type_checking
@sile
sile / README.md
Last active August 18, 2023 05:40
Optunaを使ったRocksDBのパフォーマンスチューニング

概要

  • Optunaというハイパーパラメータ最適化ツールを使って、RocksDB(組み込みDB・KVS)のパフォーマンスチューニングを試してみた際の結果メモ
    • 対象となるワークロードに対して、最適な性能を発揮するパラメータ群を自動で見つけ出すのが目的
  • 結果としては、デフォルトパラメータをそのまま使った場合に比べて、かなり良い性能が得られるパラメータ群を見つけることができた:
    • デフォルトでのベンチマークの所要時間: 372秒
    • Optunaによる最適化後のパラメータでの所要時間: 30秒

モチベーション

@sile
sile / 0_succ_bp.md
Last active July 17, 2023 23:57
簡潔データ構造やBalancedParenthesesの紹介資料メモ

発表資料メモ: 簡潔データ構造について

  1. 主題

  • 数千万オーダーの文字列集合(およびマップ)を如何にサイズ効率良く表現するか、の話
    • 諸事情で集合をメモリ上に保持したいことがあるが、サイズは節約したい
    • 実際にはサイズのみを追求するのではなく、諸々のトレードオフを加味しつつバランスを取る
  • 今回はそれを実現するための方法の一つである 簡潔データ構造 について説明する:
@sile
sile / 第20章.md
Last active July 3, 2023 02:01
実践テスト駆動開発第三回

第四部 持続可能なテスト駆動開発

開発が「快適である」状態を維持するために、テストコードに求める質について述べる。

  • テストの表現力を高める必要がある
  • テストコード自体がメンテナンスの足かせにならないようにする
  • テストがしづらいということは、大抵プロダクションコードの設計が間違っているということを示すヒント
  • TDDはテスト/仕様/設計をひとつの全体的な活動としてまとめあげるもの

第20章 テストの声を聞く

@sile
sile / HCLHLock_lock.md
Last active March 2, 2023 23:02
A Hierarchical CLH Queue Lock
//** 『The Art of Multiprocessor Programming』七章
//** A Hierarchical CLH Queue Lock **//
//
// HCLHLock::lock()の実装書き換え例
// (分かりやすさを重視しているため若干不正確な可能性がある)

public void lock() {
    QNode myNode = currNode.get();
    AtomicReference<QNode> localQueue = localQueues.get(ThreadId.getCluster());
@sile
sile / lock-free-queue.lisp
Created August 4, 2012 01:38
lock-free queue
(defpackage lock-free-queue
(:use :common-lisp)
(:export queue
make
enq
deq
empty-p
element-count
to-list))
(in-package :lock-free-queue)