コンピューターの性能向上の要因は？
クロック周波数の向上
並列計算 
 1980年代から2004年まで、コンピュータの性能向上の主たる要因はクロック周波数の向上にあった。プログラムの実行時間は、命令数と1命令あたりの平均実行時間をかけたものに比例する。他の要因が全く変化しないと仮定すると、クロック周波数の向上によって1命令あたりの平均実行時間が減少する。
カーネル 
 1980年代から1990年代初めにかけてのマイクロカーネルの性能は低かった。そういった初期のマイクロカーネルの性能を実測する研究が行われたが、性能が低い原因を深く分析することはなかった。そういったデータが一人歩きし、カーネルモードとユーザモードの切り替え回数が増え、プロセス間通信の回数が増え、コンテキストスイッチの回数が増えたためだ とみなされた。 プログラミング 
 Java、C#、PHP、Python といった言語にはそのような問題がほとんどないが、性能は低い。ただし、データベースアクセスやファイル入出力が性能を決定付けるような分野では、これらの言語の性能でも何ら問題ない。また、最近ではこれらの言語の処理系でも性能が向上してきている。 プログラミング 
 コンピュータープログラミングとは、ある特定のコンピューティングの結果を得ることを目的として、実行可能なコンピュータープログラムを設計・構築するプロセスのことである。プログラミングが関係するタスクの例としては、アルゴリズムの生成、アルゴリズムの正確さとリソースの消費量のプロファイリング、選択したプログラミング言語でのアルゴリズムの実装（これは一般にコーディングと呼ばれる）などがある。プログラムのソースコードは、コンピューターのCPUで直接実行される機械語ではなく、プログラマーが理解できる1つ以上のプログラミング言語で書かれる。プログラミングの目的は、あるタスク（オペレーティングシステムのように複雑な場合もある）をコンピューター上で自動化する1連の命令を見つけることで、与えられた問題を解決することである。そのため、プログラミングのプロセスには、アプリケーションドメインに関する知識、特定のアルゴリズム、形式論理など、さまざまな主題に関する専門性が要求されることが多い。 工学 
 コンピュータが工学に果たす役割は大きくなっている。工学についてコンピュータが支援を行う各種ソフトウェアが存在する。数理モデルの構築や、それに基づいた数値解析もコンピュータを使用してなされている。 Microsoft_Windows_XP 
 その状況はマイクロソフトにとっては開発リソースが2つの製品に向けて分散される等の大きな課題となり、9x系ではマルチメディア機能の拡張と共にシステムリソースに余裕が無くなりクラッシュが多発するようになる（特にWindows Meで顕著）など、構造面でも限界に達しており、開発負荷の軽減と、マルチメディア対応の安定したOSを作る目的で、一般家庭向けの9x系をNT系に統合することを目標に開発された。XP以前に同様の統合化を試みたWindows 2000を基本に、その際の統合の成功に至らなかった機能も含めて開発されている。この機能統合の成功により、XPはNTの安定性・堅牢性と9x系のマルチメディア機能や使いやすさを併せ持った汎用OSとなった。NTカーネルを採用した一般家庭向けのWindowsはXPが初であり、XPのリリースによって、一般市民が初めて安定に動作するOSを手軽に入手・利用することができるようになった。XPの開発成功を受け、マイクロソフトは長年の懸案であった9x系の終息を成すことができた。 閏秒 
 うるう秒の影響により、コンピュータ類で異常動作が起きることがある。特に常時稼働させているサーバ類で問題となりやすい。 カーネル 
 現代の一般的コンピュータは、ハードウェアが強制した規則を使ってプログラムのデータへのアクセスを許可している。プロセッサは動作を監視し、規則に違反したプログラムを停止させる（例えば、カーネル空間のメモリを読み書きしようとしたユーザプロセスを停止させるなど）。ケイパビリティをサポートしていないシステムでは、プロセスは相互に隔離されたアドレス空間で動作する。ユーザプロセスがカーネルを呼び出すことは、上述したシステムコールの技法を使って統制されている。 ナノテクノロジー 
 こうしたボトムアップ方式は同時に多数のデバイスを生産できるためトップダウン方式よりもずっとコストが低くなるが、必要とされる分子の大きさと複雑さが増すと困難さも増すことが予想される。有益な構造のほとんどが、複雑で熱力学的にもあり得ない原子の配置を必要としている。しかし生体内では分子認識に基づくセルフアセンブリが様々な場面で行われており、塩基対や酵素と基質の相互作用が例として挙げられる。ナノテクノロジーの目標の一つは、そういった自然界の仕組みを応用して新たな有益なものを構築することである。 バグ 
 例えば銀行のオンラインシステム（勘定系システム）などは、社会基盤を支える重要度の高いシステムであるが、年に数度ダウンする程度が目安となる。それ以上の品質を確保するよりも、問題が顕在化した時点で対処した方が、費用対効果の点で有益であると判断されるからである。 カーネル 
 カーネルが巨大化するにつれて、様々な問題が明らかになってきた。最も明らかな問題はカーネルの大きさ（メモリ使用量）の増大である。これは仮想記憶をカーネル空間にも適用することである程度まで和らげられるが、全てのコンピュータ・アーキテクチャが仮想記憶をサポートできるわけではない。カーネルのサイズを削減するため、不要なコードを削除するなどの改善が必要となるが、これはカーネルの各モジュール間の明らかにされていない依存関係があるために非常に困難である。