2025-04-01から1ヶ月間の記事一覧

Go 1.24 の testing.B.Loop() が便利

Benchmark関数を書くとき、重い初期化処理が必要になるケースがある。 例えばデータベースから大量のデータを読み込むベンチマークを書きたい場合、まずはその大きいデータを持ったテーブルを作る必要がある。 Goのベンチマーク関数は、普通は実行時間がター…

Rows.Scan() に渡す変数はループ外で宣言した方が速い

go-mysql-driver のアロケーションを調査していて気づいた小ネタ。 --- a/benchmark_test.go +++ b/benchmark_test.go @@ -423,9 +423,9 @@ func BenchmarkReceiveMassiveRows(b *testing.B) { b.Errorf("failed to select: %v", err) return } + var i int …

MySQLとMariaDBで接続collationが決定される方法の違い

MySQL 8.0がutf8mb4のデフォルトcollationを utf8mb4_0900_ai_ci に変更したことは有名です。 MariaDBも11.5からデフォルトcollationを変更したのですが、 utf8mb4_0900_ai_ci ではなく utf8mb4_uca1400_ai_ci になりました。 この2つのcollationについてはM…

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。