diff --git a/typo3/sysext/extbase/Classes/Persistence/Generic/QueryResult.php b/typo3/sysext/extbase/Classes/Persistence/Generic/QueryResult.php
index 5059824aa36c76a84ceaa6a20c75d1961d61adb9..7ee1ba0d2bd40f485bb6cb1ef81a5b85f7a744ec 100644
--- a/typo3/sysext/extbase/Classes/Persistence/Generic/QueryResult.php
+++ b/typo3/sysext/extbase/Classes/Persistence/Generic/QueryResult.php
@@ -35,6 +35,11 @@ class QueryResult implements QueryResultInterface {
 	 */
 	protected $persistenceManager;
 
+	/**
+	 * @var int|NULL
+	 */
+	protected $numberOfResults;
+
 	/**
 	 * @var \TYPO3\CMS\Extbase\Persistence\QueryInterface
 	 */
@@ -105,11 +110,14 @@ class QueryResult implements QueryResultInterface {
 	 * @api
 	 */
 	public function count() {
-		if (is_array($this->queryResult)) {
-			return count($this->queryResult);
-		} else {
-			return $this->persistenceManager->getObjectCountByQuery($this->query);
+		if ($this->numberOfResults === NULL) {
+			if (is_array($this->queryResult)) {
+				$this->numberOfResults = count($this->queryResult);
+			} else {
+				$this->numberOfResults = $this->persistenceManager->getObjectCountByQuery($this->query);
+			}
 		}
+		return $this->numberOfResults;
 	}
 
 	/**
diff --git a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryResultTest.php b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryResultTest.php
index c91924723b046e629c53351812d76ced4434633c..be1e9a017f3fa04f72a64b1618b3bd11d34ada94 100644
--- a/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryResultTest.php
+++ b/typo3/sysext/extbase/Tests/Unit/Persistence/Generic/QueryResultTest.php
@@ -129,6 +129,24 @@ class QueryResultTest extends \TYPO3\CMS\Core\Tests\UnitTestCase {
 		$this->assertEquals(2, $queryResult->count());
 	}
 
+	/**
+	 * @test
+	 */
+	public function countCountsQueryResultDirectlyIfAlreadyInitialized() {
+		$this->mockPersistenceManager->expects($this->never())->method('getObjectCountByQuery');
+		$this->queryResult->toArray();
+		$this->assertEquals(2, $this->queryResult->count());
+	}
+
+	/**
+	 * @test
+	 */
+	public function countOnlyCallsGetObjectCountByQueryOnPersistenceManagerOnce() {
+		$this->mockPersistenceManager->expects($this->once())->method('getObjectCountByQuery')->will($this->returnValue(2));
+		$this->queryResult->count();
+		$this->assertEquals(2, $this->queryResult->count());
+	}
+
 	/**
 	 * @test
 	 */