Trực giác của bạn có thể cải thiện theo thời gian. Tôi sẽ ném nó ra, có thể gây tranh cãi một chút, nhưng qua nhiều năm sử dụng VTune và CodeAnalyst và bây giờ là CodeXL, tôi nói rằng tôi chính xác hơn nhiều về trực giác của mình so với trước đây về các điểm nóng, ít nhất là điểm mà tôi không còn mất cảnh giác khi tôi lập hồ sơ một số mã. Điều đó không có nghĩa là tôi cố gắng tối ưu hóa mọi thứ một cách mù quáng.
Hồ sơ đã thực sự làm tăng sự phụ thuộc của tôi vào hồ sơ, không làm giảm nó. Tôi chỉ nói rằng tôi có thể dễ dàng dự đoán kết quả hồ sơ hơn ở mức độ nào và hơn nữa, loại bỏ thành công các điểm nóng và cải thiện thời gian cần thiết để hoàn thành thao tác kết thúc người dùng mà không bị đâm mù trong bóng tối và mất tích (điều gì đó bạn có thể làm ngay cả khi sử dụng một trình lược tả cho đến khi bạn bắt đầu hiểu không chỉ các điểm nóng là gì, mà tại sao chính xác chúng là các điểm nóng liên quan đến, giả sử, bộ nhớ cache bị mất).
Tuy nhiên, phải đến khi tôi bắt đầu sử dụng trình biên dịch, tôi mới bắt đầu cải thiện trực giác đó. Một trong những lý do là bởi vì nếu bạn đã quen thuộc với mã của mình, linh cảm của bạn có thể đúng với các điểm nóng lớn nhất và rõ ràng nhất, nhưng không phải là tất cả sự tinh tế ở giữa. Đương nhiên, nếu bạn có một hoạt động kết thúc người dùng mất một giờ để hoàn thành và có một thuật toán phức tạp bậc hai xử lý một đầu vào trải rộng hàng trăm nghìn phần tử, bạn có thể tiết kiệm được toàn bộ số tiền tiết kiệm cả đời của mình với ý tưởng rằng đó là độ phức tạp bậc hai thuật toán có lỗi ở đây. Nhưng điều đó không cung cấp cho bạn bất kỳ cái nhìn sâu sắc chi tiết nào hoặc, nói, cho bạn biết chính xác những gì không đóng góp cho thời gian.
Có rất nhiều giá trị cần có khi bạn bắt đầu lập hồ sơ và thấy nơi tất cả những điều bạn nghĩ có thể là một đóng góp lớn hơn của thời gian không đóng góp nhiều thời gian; không phải là nguồn gây ra sự thiếu hiệu quả rõ ràng mà là những nguồn bạn nghi ngờ có thể hơi kém hiệu quả, nhưng sau khi định hình, nhận ra rằng họ hầu như không đóng góp bất cứ lúc nào. Và đó có khả năng là nơi bạn có được cái nhìn sâu sắc trực quan nhất là thấy mình bị thể hiện sai trong tất cả những lĩnh vực tinh tế mà không rõ ràng chính xác là đã dành bao nhiêu thời gian.
Trực giác của con người vượt ra ngoài sự phức tạp thuật toán rõ ràng thường sẽ bắt đầu không chính xác bởi vì những gì hiệu quả cho máy móc và những gì hiệu quả cho tâm trí con người là rất khác nhau. Ban đầu, không có gì là trực giác khi nghĩ về hệ thống phân cấp bộ nhớ đi từ các thanh ghi đến bộ đệm CPU đến DRAM vào đĩa. Sẽ không trực giác khi nghĩ rằng số học dư thừa có thể nhanh hơn so với việc truy cập nhiều nhánh hoặc truy cập bộ nhớ của bảng tra cứu để bỏ qua một số công việc xử lý. Chúng ta có xu hướng suy nghĩ về việc có bao nhiêu công việc phải làm trong khi giảm giá những thứ như chi phí đưa ra quyết định và tải bộ nhớ và cửa hàng. Những gì hiệu quả cho phần cứng thường rất phản trực quan theo những cách sẽ phá vỡ mọi giả định của con người bạn bắt đầu,
Nơi cải thiện trực giác đó có thể giúp, thông qua hồ sơ, là thiết kế giao diện . Thiết kế giao diện rất tốn kém để thay đổi trong nhận thức muộn, với chi phí tăng tỷ lệ thuận với số lượng địa điểm tùy thuộc vào giao diện đó. Khi bạn bắt đầu cải thiện trực giác của mình, bạn có thể bắt đầu thiết kế giao diện tốt hơn ngay từ lần đầu tiên theo cách rời khỏi phòng thở để tối ưu hóa trong tương lai mà không phải thay đổi thiết kế tốn kém. Mặc dù vậy, một lần nữa, trực giác đó là thứ bạn thường phát triển và tiếp tục phát triển vô thời hạn, bằng cách luôn có sẵn hồ sơ đó.