2つの呼び出しの意味は異なりますが、パフォーマンスとは関係ありません。実行時間を短縮するという事実は、副作用です(あるいはそうかもしれません)。それらは最適化のように見えるので、それぞれの機能を理解し、盲目的にそれらをすべてのプログラムに含める必要はありません。
ios_base::sync_with_stdio(false);
これにより、CおよびC ++標準ストリーム間の同期が無効になります。デフォルトでは、すべての標準ストリームが同期されます。これにより、実際には、CスタイルとC ++スタイルのI / Oを混在させ、適切で期待どおりの結果を得ることができます。同期を無効にすると、C ++ストリームは独自の独立したバッファーを持つことができるため、CとC ++スタイルのI / Oを混在させることができます。
また、同期されたC ++ストリームはスレッドセーフです(異なるスレッドからの出力はインターリーブされる可能性がありますが、データの競合は発生しません)。
cin.tie(NULL);
これcinはcoutます。タイドストリームは、1つのストリームが他のストリームの各I / O操作の前に自動的にフラッシュされることを保証します。
デフォルトでcinはcout、ユーザーが適切に操作できるように関連付けられています。例えば:
std::cout << "Enter name:";
std::cin >> name;
cinとcoutが関連付けられている場合、プログラムがユーザーからの入力を要求する前に、出力がフラッシュされる(つまり、コンソールに表示される)ことが期待できます。ストリームの結合を解除すると、プログラムはユーザーが名前を入力するのを待つのをブロックする可能性がありますが、「名前を入力してください」というメッセージはまだ表示されていません(coutされデフォルトでバッファされる、出力はオンデマンドでのみ、またはバッファがいっぱいです)。
したがって、cinから解放する場合はcout、でcout入力を期待する前に、何かを表示するたびに手動でフラッシュする必要がありますcin。
結論として、それらのそれぞれが何を知って、結果を理解し、次にあなたが本当にしたいか、必要かどうかを判断可能な速度向上の副作用を。