diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index 09166ef0528b0a39900b4ca6ab83062f2386da5b..f89d5df105784a95a9e351b5a5d1b551a604b059 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -445,6 +445,7 @@ CppCodeCompletion::CppCodeCompletion(CppModelManager *manager)
       m_completionOperator(T_EOF_SYMBOL),
       m_objcEnabled(true)
 {
+    m_sorted = false;
 }
 
 QIcon CppCodeCompletion::iconForSymbol(Symbol *symbol) const
@@ -654,6 +655,7 @@ bool CppCodeCompletion::triggersCompletion(TextEditor::ITextEditable *editor)
 
 int CppCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
 {
+    m_sorted = false;
     TextEditor::BaseTextEditor *edit = qobject_cast<TextEditor::BaseTextEditor *>(editor->widget());
     if (! edit)
         return -1;
@@ -1590,7 +1592,10 @@ QList<TextEditor::CompletionItem> CppCodeCompletion::getCompletions()
 
     completions(&completionItems);
 
-    qStableSort(completionItems.begin(), completionItems.end(), completionItemLessThan);
+    if (! m_sorted) {
+        qStableSort(completionItems.begin(), completionItems.end(), completionItemLessThan);
+        m_sorted = true;
+    }
 
     // Remove duplicates
     QString lastKey;
@@ -1736,6 +1741,7 @@ bool CppCodeCompletion::partiallyComplete(const QList<TextEditor::CompletionItem
 
 void CppCodeCompletion::cleanup()
 {
+    m_sorted = false;
     m_completions.clear();
 
     // Set empty map in order to avoid referencing old versions of the documents
diff --git a/src/plugins/cpptools/cppcodecompletion.h b/src/plugins/cpptools/cppcodecompletion.h
index 39d23adf68bf6d2b4278becbf7cd6044b1fa5bf0..432f1f298ab9560976ff621ee14e92d13c31d224 100644
--- a/src/plugins/cpptools/cppcodecompletion.h
+++ b/src/plugins/cpptools/cppcodecompletion.h
@@ -147,6 +147,7 @@ private:
     QPointer<FunctionArgumentWidget> m_functionArgumentWidget;
 
     QList<TextEditor::CompletionItem> m_completions;
+    bool m_sorted;
 };
 
 } // namespace Internal