diff --git a/src/plugins/projectexplorer/taskmodel.cpp b/src/plugins/projectexplorer/taskmodel.cpp
index dcebb02f6b3ca58771a2a8484539c6f2f8c27f17..7a7a73360be651b428404c46f28248c4a12dde3a 100644
--- a/src/plugins/projectexplorer/taskmodel.cpp
+++ b/src/plugins/projectexplorer/taskmodel.cpp
@@ -150,12 +150,13 @@ void TaskModel::removeTask(const Task &task)
 
 void TaskModel::updateTaskLineNumber(unsigned int id, int line)
 {
-    for (int i = 0; i < m_tasks.count(); ++i) {
-        if (m_tasks.at(i).taskId == id) {
-            m_tasks[i].movedLine = line;
-            emit dataChanged(index(i, 0), index(i, 0));
-            return;
-        }
+    QList<Task>::iterator it = qLowerBound(m_tasks.begin(), m_tasks.end(), id, sortById);
+    QTC_ASSERT(it != m_tasks.end(), return)
+    int i = it - m_tasks.begin();
+    if (m_tasks.at(i).taskId == id) {
+        m_tasks[i].movedLine = line;
+        emit dataChanged(index(i, 0), index(i, 0));
+        return;
     }
 }