ノスタルジックな素数ジェネレーター[終了]


16

単純なドキュメントまたはWebページを開くと、コンピューターにあるすべての貧弱なリソースを食い尽くしていたため、非常に遅いという古き良き時代を覚えていますか?そして、今日、プロセッサが数百倍高速であり、数千倍のメモリにアクセスしているにもかかわらず、同じことをするのはさらに遅くなりますか?

現在のドキュメントビューアーおよび同様のアプリケーションでの肥大化の影響をシミュレートするには、より強力なマシンで実行したときに目に見えるパフォーマンスの問題があるプログラムを作成します

すべての人に共通のタスクを持たせるには、それを素数ジェネレータにします。

  • このプログラムは、2から始まる新しい素数の連続する素数を印刷しなければなりません。これは永久に(またはメモリ不足になるまで)する必要があります。このような:
2
3
5
7
11
13
17
  • 各行の印刷には、人間が認識できる程度の遅延が必要です。

  • この遅延は、プログラムが実行されているマシンが高速になるほど長くなります。マシンが速いほど、プログラムは遅くなります。

  • 主観的になる可能性があるため、正確なベンチマークを指定しませんが、2台のマシンのパフォーマンスに大きな違いがある場合、2台の異なるマシンで人間が知覚できる速度の違いがあるはずです。

  • プログラムの速度は、これまでに作成されたすべての既存のマシンで単調に減少する必要はありません。これは特定するのが難しく、検証するのはさらに困難です。マシン間で大幅に異なるパフォーマンスと見なすことができるものについて、出場者の常識を信じており、それで十分です。

  • また、正確な上限または下限を指定しませんが、妥当な制限内である必要がありますので、2行を印刷する間で日数または年数を指定しないでください。

  • Eniacから現代までのすべてで実行する必要はありませんが、たとえば2つの特定のCPUタイプでのみ動作し、特定の1つのCPUの名前を具体的に検出することは許可されません低速または高速で実行されます。

  • コードはコンパイラーまたはインタープリターのバージョンに依存するべきではありません。同じバージョンのコンパイラ/インタープリターが低速マシンと高速マシンの両方にインストールされている場合、またはバイナリ/バイトコードが1台のマシンでコンパイルされてから2台の異なるマシンで実行されている場合でも動作します。

  • プログラムの動作原理を説明してください。結果を再現するのは難しいため、回答の有効性はメソッドの実行可能性に依存する場合があります。

残念ながらこのサイトは「プログラミングパズルとコードゴルフ」ではなく、単に「コードゴルフ」に過ぎないため、最も短いコードが勝ちます。


5
マシンが速いほど、プログラムは遅くなります。これを客観的で検証可能な基準にする簡単な方法がありません
ルイスメンドー

1
@LuisMendo:これを簡単に行うには、少なくとも2つの方法があります。
VSZ

1
@vsz私が見る問題は再現性です。誰かが2台のマシンでテストし、必要に応じて速度に大きな違いがあることに気づいたと言いますが、2台のマシンでその動作を再現することはできません。答えは有効ですか?
ルイスメンドー

1
これにbusy-beaverのタグを付ける必要がありますか?
mbomb007 16

2
あなたは何であると考えてください「より強力なマシン」?マシンは同じ仕様ですが、より多くのRAMがより強力であると見なされますか?プロセッサが1秒間に実行する命令の数は?どちらも?他に何か?
16

回答:


4

Perl、80 78 71バイト

@Dadaのおかげで-9バイト

$_++;`lscpu`=~/z:\s+(\d+)/,sleep$1,(1x$_)!~/^(11+?)\1+$/&&say while$_++

コマンドlscpuを実行し、MHzでCPU速度を見つけます。CPUが高速になるほど、出力間でスリープする時間が長くなり、1 MHzごとに1秒になります。Ubuntu 14.04.5で実行されます。私の特定のマシンでは、これは各番号を800秒(13分、20秒)ごとにテストします。高速なマシンでは、これは50分以上かかる場合があります。sleep$a/400テスト目的のためにもっと正気なものを得るためにそれを変更してください。


コードを少し$_++;並べ替えると=~/z:\s+(\d+)/,sleep$1,(1x$_)!~/^(11+?)\1+$/&&say while++$_、71バイトのlscpu が得られます。
ダダ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.