Các máy tính hiện đại có nhiều lớp bộ nhớ đệm ngoài hệ thống bộ nhớ chính lớn, nhưng chậm. Người ta có thể thực hiện hàng tá truy cập vào bộ nhớ cache nhanh nhất trong thời gian cần thiết để đọc hoặc ghi một byte từ hệ thống bộ nhớ chính. Do đó, truy cập một vị trí một nghìn lần nhanh hơn nhiều so với truy cập 1.000 (hoặc thậm chí 100) vị trí độc lập một lần. Bởi vì hầu hết các ứng dụng liên tục phân bổ và phân bổ một lượng nhỏ bộ nhớ gần đỉnh ngăn xếp, các vị trí trên đỉnh của ngăn xếp được sử dụng và sử dụng lại một lượng rất lớn, chiếm đa số (99% + trong một ứng dụng thông thường) truy cập ngăn xếp có thể được xử lý bằng bộ nhớ cache.
Ngược lại, nếu một ứng dụng liên tục tạo và từ bỏ các đối tượng heap để lưu trữ thông tin tiếp tục, mọi phiên bản của mọi đối tượng ngăn xếp đã được tạo sẽ phải được ghi vào bộ nhớ chính. Ngay cả khi phần lớn các đối tượng như vậy sẽ hoàn toàn vô dụng vào thời điểm CPU muốn tái chế các trang bộ nhớ cache mà chúng bắt đầu, CPU sẽ không có cách nào để biết điều đó. Do đó, CPU sẽ phải lãng phí rất nhiều thời gian để thực hiện ghi bộ nhớ chậm với thông tin vô dụng. Không chính xác một công thức cho tốc độ.
Một điều khác cần xem xét là trong nhiều trường hợp, thật hữu ích khi biết rằng một tham chiếu đối tượng được truyền cho một thường trình sẽ không được sử dụng một khi thói quen thoát ra. Nếu các tham số và biến cục bộ được truyền qua ngăn xếp và nếu kiểm tra mã của thường trình cho thấy rằng nó không tồn tại một bản sao của tham chiếu được truyền vào, thì mã gọi thường trình có thể chắc chắn rằng nếu không có tham chiếu bên ngoài đến đối tượng tồn tại trước cuộc gọi, không có gì sẽ tồn tại sau đó. Ngược lại, nếu các tham số được truyền qua các đối tượng heap, các khái niệm như "sau khi trả về thường trình" trở nên khó hiểu hơn, vì nếu mã giữ một bản sao của phần tiếp theo, thì thường xuyên có thể "trả về" nhiều lần cuộc gọi duy nhất.