可視性: 
angularjsがブートストラップしている間、ユーザーはhtmlに配置されたブラケットを見るかもしれません。これはで処理できますng-cloak。しかし、私にとってこれは回避策であり、を使用する場合、使用する必要はありませんng-bind。
パフォーマンス:
{{}}あるはるかに遅いです。
これng-bindはディレクティブであり、渡された変数にウォッチャーを配置します。そのためng-bind、渡された値が実際に変更された場合にのみ適用されます。
一方、ブラケットは、必要のない場合でも、ダーティチェックされ、毎回 更新されます。$digest
私は現在、大きな単一ページアプリ(ビューあたり500バインディング)を構築しています。{{}}からstrictに変更するとng-bind、すべてので約20%節約できましたscope.$digest。
提案:
angular-translateなどの変換モジュールを使用する場合は、ブラケットアノテーションの前に常にディレクティブを使用してください。
{{'WELCOME'|translate}}  => <span ng-translate="WELCOME"></span>
フィルター関数が必要な場合は、実際にはカスタムフィルターを使用するだけのディレクティブをお勧めします。  $ filterサービスのドキュメント
更新28.11.2014(ただし、トピックから外れている可能性があります):
Angular 1.3xでは、このbindonce機能が導入されました。したがって、式/属性の値を1回バインドできます(!= 'undefined'の場合にバインドされます)。
これは、バインディングの変更を予期しない場合に役立ちます。 
使用法:::バインディングの前に配置します。
<ul>  
  <li ng-repeat="item in ::items">{{item}}</li>
</ul>  
<a-directive name="::item">
<span data-ng-bind="::value"></span>
例: 
ng-repeat行ごとに複数のバインディングを持つテーブル内のデータを出力します。翻訳バインディング、フィルター出力、すべてのスコープダイジェストで実行されます。
               
              
ngBind代わりに使用することをお{{ expression }}勧めします。ngBindはelement属性なので、ページのロード中はユーザーにバインディングを非表示にします。」-しかし、パフォーマンスについては何も言及されていません。