Pythonによるバブルソートの並列処理時の速度比較

Pythonでソートアルゴリズムを学習中。せっかくだしバブルソートを覚えてみようと思い、まずはWikipediaバブルソートに関する記事に目を通した。そこには『並列処理との親和性が高い』との記述があり、本当にそうなのか勉強がてらプログラムを書いてみることにした。

バブルソート - Wikipedia


テストした環境

  • OS : MacOS Sierra 10.12.4
  • CPU : Intel Core i3 3.2 GHz
  • メモリ : 8GB
  • 言語 : Python3.6.1


プログラム

A bubble-sort program by threading-library.


A bubble-sort program by multiprocessing-library.


A sort program using sort-method by threading-library.


A sort program using sort-method by multiprocessing-library.


結果

  • bubble sort : threadingライブラリ

number sort-time : 0.000481 sec
string sort-time : 0.000480 sec

  • bubble sort : multiprocessingライブラリ

number sort-time : 0.006205 sec
string sort-time : 0.006204 sec

  • sort method : threadingライブラリ

number sort-time : 0.000534 sec
string sort-time : 0.000532 sec

  • sort method : multiprocessingライブラリ

number sort-time : 0.006504 sec
string sort-time : 0.006503 sec


確かに並列処理での処理速度は比較的速めのようだ。multiprocessingライブラリではなくthreadingライブラリでの処理速度が速かった。驚いたのは、sortメソッドよりもバブルソートプログラムの方が処理速度が早いこと。sortメソッドの並列処理との親和性はさほど高くないということだろうか。それとも、それだけバブルソートと並列処理との親和性が高いということなのだろうか。あと不思議に思ったことがあって、どのソートアルゴリズムも数値より文字の方が微妙に速い。文字から文字コードに変換する分余計に時間がかかりそうなものだが、なぜか数値よりも文字の方が微妙に速い。