"Đáng giá" cần bối cảnh, như việc viết và đọc và duy trì đơn giản hơn bao nhiêu so với việc nó khiến người dùng phản ứng nhanh hơn, tương tác nhanh hơn, cần ít thời gian hơn để họ chờ đợi.
Tiết kiệm một vài đồng xu để mua một lon soda sẽ không giúp tôi nhiều nếu tôi phải đi một quãng đường để tiết kiệm những đồng xu đó, đặc biệt là tôi hiếm khi uống soda trong những ngày này. Tiết kiệm một vài đồng xu mỗi lon khi mua một triệu lon soda có thể là một vấn đề lớn.
Trong khi đó, tiết kiệm một vài đồng xu khi hai người ở ngay cạnh tôi và một người đưa ra điều tương tự chính xác với một vài đồng xu rẻ hơn và người kia thì không, và tôi chọn một chiếc đắt hơn vì tôi thích chiếc mũ của họ hơn có vẻ như là một trường hợp ngu ngốc bi quan.
Điều tôi thường thấy là những người gọi là "tối ưu hóa vi mô" dường như không có sự đo lường, bối cảnh và thảo luận về người dùng, khi hoàn toàn nên có cả ba để xem xét tối ưu hóa như vậy nếu chúng không áp dụng tầm thường. Đối với tôi một tối ưu hóa vi mô thích hợp ngày nay liên quan đến những thứ như bố cục bộ nhớ và các mẫu truy cập, và mặc dù chúng có vẻ "vi mô" trong tiêu điểm, chúng không có hiệu lực vi mô.
Cách đây không lâu, tôi đã giảm được một thao tác giảm từ 24 giây xuống còn 25 mili giây (nhanh hơn khoảng 960 lần), với các đầu ra giống hệt nhau (được bảo đảm bằng các thử nghiệm tự động), không thay đổi độ phức tạp thuật toán, cho quá trình khuếch tán nhiệt thể tích, qua "Tối ưu hóa vi mô" (phần lớn nhất đến từ sự thay đổi trong cách bố trí bộ nhớ đã giảm xuống còn khoảng 2 giây, phần còn lại là những thứ như SIMD và phân tích thêm về lỗi bộ nhớ cache trong VTune và sắp xếp lại bố cục bộ nhớ).
Wolfire giải thích kỹ thuật ở đây và anh ta vật lộn với thời gian cần thiết:
http://blog.wolfire.com/2009/11/volumetric-heat-diffusion- leatherning /
Việc triển khai của tôi đã xoay sở để có thể làm điều đó trong một phần nghìn giây trong khi anh ta đang vật lộn để hạ nó xuống dưới một phút:
Sau khi tôi "tối ưu hóa vi mô", nó giảm từ 24 giây xuống còn 25 giây, đó là một công cụ thay đổi trò chơi trong quy trình làm việc. Giờ đây, các nghệ sĩ có thể thay đổi giàn khoan của họ trong thời gian thực ở mức trên 30 FPS mà không phải chờ 24 giây mỗi khi họ thực hiện bất kỳ thay đổi nhỏ nào đối với giàn khoan của họ. Và điều đó thực sự đã thay đổi toàn bộ thiết kế phần mềm của tôi vì tôi không còn cần thanh tiến trình và những thứ thuộc loại này, tất cả đã trở thành tương tác. Vì vậy, đó có thể là một "tối ưu hóa vi mô" theo nghĩa là tất cả các cải tiến đều không có sự cải thiện về độ phức tạp thuật toán, nhưng nó thực sự là một "tối ưu hóa lớn" tạo ra quá trình trước đây là một quá trình không tương tác đau đớn vào thời gian thực, tương tác thay đổi hoàn toàn cách người dùng làm việc.
Đo lường, Yêu cầu kết thúc người dùng, Bối cảnh
Tôi thực sự thích bình luận của Robert ở đây và có lẽ tôi đã thất bại trong việc đưa ra quan điểm mà tôi muốn:
Vâng, xin chào. Không ai sẽ tranh luận rằng loại thay đổi này không "đáng giá". Bạn đã có thể chứng minh một lợi ích hữu hình; nhiều cái gọi là tối ưu hóa vi mô không thể.
Điều này là, mặc dù làm việc trong một lĩnh vực rất quan trọng về hiệu suất với các yêu cầu thường xuyên theo thời gian thực, lần duy nhất tôi xem xét bất kỳ tối ưu hóa vi mô nào đòi hỏi phải thực hiện theo cách của tôi.
Và tôi nhấn mạnh không chỉ các phép đo mà cả phía người dùng của nó. Tôi là một người kỳ quặc khi tôi đến với lĩnh vực hiện tại của mình (và trước đây là gamedev) với tư cách là người dùng / người hâm mộ đầu tiên, nhà phát triển thứ hai. Vì vậy, tôi chưa bao giờ hào hứng với những điều thông thường khiến các lập trình viên thích giải quyết các câu đố kỹ thuật; Tôi thấy họ là một gánh nặng, nhưng sẽ vượt qua họ thông qua giấc mơ kết thúc người dùng mà tôi đã chia sẻ với những người dùng khác. Nhưng điều đó giúp tôi đảm bảo nếu tôi tối ưu hóa bất cứ điều gì, nó sẽ có tác động thực sự đến người dùng với lợi ích thực sự. Đó là biện pháp bảo vệ của tôi chống lại tối ưu hóa vi mô một cách vô mục đích.
Theo tôi, điều đó thực sự quan trọng như trình hồ sơ, bởi vì tôi đã có những đồng nghiệp đã làm những việc như phân chia tối ưu hóa vi mô thành một tỷ khía cạnh chỉ để bóp nghẹt các mô hình sản xuất trong thế giới thực như nhân vật và phương tiện. Kết quả của họ rất ấn tượng theo nghĩa "bản demo công nghệ", nhưng hầu như vô dụng với người dùng thực tế, bởi vì họ đã định hình và đo lường và đo điểm chuẩn không phù hợp với các trường hợp sử dụng trong thế giới thực. Vì vậy, điều quan trọng là phải hiểu những gì quan trọng đối với người dùng trước tiên, bằng cách học cách suy nghĩ và sử dụng phần mềm như một hoặc cộng tác với họ (lý tưởng là cả hai, nhưng ít nhất là cộng tác với họ).