はじめに
色々とコーディングをする中で、すごくメモリを食うなあと思った際に、ふとpythonの多倍長整数のことを投稿しようと思ったので記載します。
多倍長整数とは
プログラムを作った時に、整数がどれくらいの大きさになっているか(どれくらいのメモリを使うか)、事前にわかっている場合と、わかっていない場合があるかと思います。
事前にわかっている場合は、それに応じてメモリの使い方を指定することで処理パフォーマンスは向上できます。
一方で
巨大な数の素因数分解などの計算では、整数がどのくらい大きいものかなかなかわかりません。
こういう事前にわからないものを扱うのために、好きなだけメモリを使えるようにするという指示ができるのが多倍長整数です。
自動でメモリの不足分を確保しに行ってくれます。
(メモリってよく聞くし、使うけどなんなの)
メモリとは、CPUが処理を行う時に、必要なデータを一時的に保存しておく場所を指します。
※料理をする時のキッチンスペースみたいな感じでしょうか。同時に何品も作ると、材料が置けなくなって、料理が進まないみたいな。
PCのメモリ
メモリの容量が大きければ大きいほど、一時的に置いておけるデータが大量になります。
つまりCPUが同時にこなせる仕事の量は大きくなります。
ここで大事なのは
メモリが大きい≠パソコンの処理が速い
メモリが大きい=同時にできる処理が増える
ということです。
以下参照。参照元はこちら
メモリー容量 | 用途 |
---|---|
2GB | 本当に必要最低限の容量。Chromeをつけすぎると「重たい」と感じやすい。 |
4GB | 少なめ。ネットサーフィン、Office系なら範囲内だが、割りと簡単に90%くらいまで使い切れる。 |
8GB | 標準的な容量。Chrome大量、Office系、軽めのゲームなど、割りといろいろ出来る。 |
16GB | ちょっと多め。重たいゲーム、Chrome大量、Adobe系など、16GBあればほとんど困りません。 |
32GB | かなり多い、少数派です。Photoshopなどで解像度の大きいデータを扱う、といった特定の条件なら有効。 |
64GB | すごく多い。高度なCAD系ソフトのレンダリングなど、業務向けの用途じゃないと大抵の場合は「宝の持ち腐れ」で終わります。 |
参照元はこちら |
(言わずもがなですがbitとかbyteについて)
言わずもがなbit、Byteは単位です。
KB、MB、GB、TBの方が生活では見かけることが多いでしょうか。このBはByteです。説明不要ですね。
※転送速度ではbit単位がよく使われます。
bitとは
前回こちらでPCは0と1の二進法で計算されていることを一瞬説明しました。
bitはその0or1を収めるマスの数です。
1bitなら1マス分、0or1を入れられるので、表せるのは2パターン
。
8bitなら8マス分、0or1を入れられるので、表せるのは256パターン
になります。
byteとは
1byte=8bitです。
この1byteは半角英数字1字分のデータ量になります。
例えばアルファベットAは01000001で表せます。
ちなみに日本語全角文字は2byteです。
ここから1000倍ずつしたものが
1000byte=1KB
1000KB=1MB
1000MB=1GB
1000GB=1TB
※1024倍の場合もあります。
話は戻ってpythonへ
一番最初に記述した多倍長整数ですが
Python2系ではlong、Python3系ではintになっています。
python3系の場合は、整数はintにまとめられているので意識しないですが、多倍長整数は、多倍長ではない整数を使う場合よりもメモリを大量に使うことを覚えておいた方がよさそうです。
参考
おわり
雑多な記事になりました。