Tối ưu hóa vi mô - BAD vs Phát triển trò chơi


12

Trong phát triển trò chơi có rất nhiều C / C ++, trong các ứng dụng kinh doanh C #. Tôi đã thấy các nhà phát triển C / C ++ bày tỏ mối quan tâm về cách một dòng mã duy nhất chuyển thành lắp ráp. Trong .NET, một số đi vào IL, hiếm khi.

Trong C #, "tối ưu hóa vi mô" được tán thành, hiếm gặp và thường lãng phí thời gian. Điều này dường như không phải là trường hợp phát triển trò chơi.

Điều gì đặc biệt tạo ra sự không nhất quán này? Các trò chơi liên tục đẩy các giới hạn của phần cứng? Nếu có, khi phần cứng được cải thiện, chúng ta có nên hy vọng các ngôn ngữ cấp cao hơn sẽ chiếm lĩnh ngành công nghiệp game?

Tôi không tìm kiếm một cuộc tranh luận về tính khả thi của C # với tư cách là một nhà phát triển trò chơi. Tôi biết nó đã được thực hiện ở một mức độ nào đó. Tập trung vào tối ưu hóa vi mô. Cụ thể, sự khác biệt giữa Game Dev và Ứng dụng dev.

CẬP NHẬT
bởi trò chơi Tôi có nghĩa là phát triển quy mô hiện đại. EG MMORPG, Xbox, PS3, Wii ...


3
Tôi đã làm việc như một nhà phát triển trò chơi và một nhà phát triển ứng dụng và sự khác biệt là rất lớn. Tối ưu hóa vi mô mà không định hình được nhăn mặt trên cả hai. Nhiều trò chơi không có yêu cầu rất mạnh và không yêu cầu tối ưu hóa. Một số ứng dụng kinh doanh đòi hỏi các yêu cầu nghiêm ngặt hơn nhiều (ví dụ: đảm bảo thời gian thực và thời gian thực) so với trò chơi trung bình 60Hz.
Dave Hillier

1
Một yếu tố nữa là trong các ứng dụng kinh doanh, bạn thường có thể chọn phần cứng (trong lý do). Nếu tôi cần thêm sức mạnh xử lý, tôi có thể mua một máy chủ khác hoặc trả thêm thời gian cho AWS. Trong các trò chơi, yêu cầu phần cứng mới nhất biến trò chơi 60 đô la thành trò chơi và thẻ video trị giá 1.060 đô la. Nếu bạn đang phát triển cho bảng điều khiển, nâng cấp phần cứng có thể có nghĩa là trì hoãn trong nhiều năm chờ đợi thế hệ tiếp theo. Khi bạn không thể có được phần cứng tốt hơn, bạn phải sử dụng nó tốt hơn.
Andrew

Câu trả lời:


17

Trong các ứng dụng kinh doanh, CPU không phải lúc nào cũng là nút cổ chai. Một ứng dụng kinh doanh sẽ dành phần lớn thời gian chờ đợi. Ví dụ:

  1. chờ kết quả từ truy vấn cơ sở dữ liệu
  2. chờ yêu cầu Web kết thúc
  3. chờ người dùng thực hiện hành động UI

Đó là lý do tại sao mã tối ưu hóa hiệu suất xử lý không thêm quá nhiều giá trị.

Xem xét chính là:

  1. Đến giờ đi chợ
  2. Đơn giản, người khác có thể hiểu và duy trì mã

6
Tôi sẽ chỉ ra rằng mã tối ưu hóa các truy vấn cơ sở dữ liệu có thể cải thiện đáng kể khả năng sử dụng của các ứng dụng kinh doanh.
HLGEM

4
+1. Tối ưu hóa cơ sở dữ liệu và mạng thường sẽ mang lại nhiều lợi ích hơn cho ứng dụng kinh doanh. Ví dụ: lựa chọn JSON vs XML và điều chỉnh các chỉ mục DB
Shamit Verma

2
+1 nhưng bạn nên thêm vào mặt khác của phương trình: "vòng lặp chính" và kết xuất trong trò chơi phù thủy tính linh hoạt của trò chơi dựa vào việc làm cho mỗi micrô giây bị mất giá trị, bởi vì chất lượng có thể cảm nhận được đến mắt và các giác quan khác.
Klaim

1
Nói hay lắm. Và thực sự, khi đã thực hiện các ứng dụng kinh doanh và phát triển trò chơi, tôi đã dành thời gian miệt mài với một truy vấn SQL phức tạp để cố gắng tăng thêm một số hiệu suất, giống như tôi đã dành thời gian lướt qua một vòng lặp bên trong trong một trò chơi.
Carson63000

Tất cả trở lại với tối ưu hóa sớm là gốc rễ của mọi tội lỗi . Hồ sơ cho thấy rõ rằng hầu hết thời gian dành cho ứng dụng kinh doanh trung bình của bạn là mạng IO + cơ sở dữ liệu.
Alex Reinking

13

Trong các ứng dụng kinh doanh, rất hiếm khi micro giây trở thành vấn đề. Trong các trò chơi, đó là một thực tế của cuộc sống.

Nếu bạn muốn có một trò chơi chạy ở 60 khung hình mỗi giây, bạn có ~ 16,67 mili giây để làm mọi thứ cần thực hiện cho khung hình đó - đầu vào, vật lý, logic trò chơi, âm thanh, mạng, AI, kết xuất, v.v. nếu bạn may mắn, bạn sẽ chạy với tốc độ 30 khung hình / giây và có 33,3 mili giây sang trọng. Nếu một khung hình quá dài, các đánh giá của bạn sẽ bị ảnh hưởng, người chơi của bạn sẽ điền vào các diễn đàn internet và bạn sẽ không bán nhiều như bạn có thể (không đề cập đến cú đánh vào niềm tự hào nghề nghiệp của bạn) và nếu bạn thực sự không may mắn sẽ tìm thấy nhóm của bạn mã hóa các ứng dụng kinh doanh để kiếm sống.

Tất nhiên, các nhà phát triển trò chơi không lo lắng về từng dòng đơn lẻ, với kinh nghiệm và trình biên dịch đàng hoàng, bạn tìm hiểu những dòng nào cần lo lắng. Mặt khác, những lo lắng đó đôi khi sẽ chạm đến những thứ mà trong thế giới kinh doanh có thể sẽ được coi là tối ưu hóa nano hơn là tối ưu hóa vi mô.

Đừng mong đợi bất kỳ ngôn ngữ cấp cao nào sẽ loại C ++ ra khỏi cửa cho đến khi một ngôn ngữ mang lại hiệu năng tương đương và có thể dự đoán được.


8
Trong các ứng dụng giao dịch tần số cao, micro giây rất quan trọng!
quant_dev

2
@quant: Giống như hầu hết các ứng dụng xử lý luồng - robot, lưới điện, tên lửa, công nghệ y tế, v.v ... Xây dựng quá nhiều tồn đọng và có thể đã quá muộn khi bạn bắt kịp.
Aaronaught

@quant_dev: ứng dụng thương mại cao tần số rất hiếm.
molbdnilo

Không còn nữa. Chúng hiếm hơn các ứng dụng kế toán, nhưng phổ biến hơn là, phần mềm thiết kế máy bay.
quant_dev

Microseconds cũng quan trọng trong các ứng dụng kinh doanh, nút cổ chai thường chỉ được tìm thấy ở nơi khác (trên mạng, trong cơ sở dữ liệu hoặc hệ thống tệp).
RubberDuck

9

Được rồi, vì vậy bạn đã thấy các nhà phát triển C và C ++ bị ám ảnh bởi các dòng riêng lẻ. Tôi cá là họ không bị ám ảnh bởi mỗi dòng.

Có những trường hợp bạn muốn hiệu suất tối đa, và điều này bao gồm rất nhiều trò chơi. Các trò chơi luôn cố gắng đẩy các giới hạn hiệu suất, để trông đẹp hơn so với đối thủ cạnh tranh trên cùng một phần cứng. Điều này có nghĩa là bạn áp dụng tất cả các kỹ thuật tối ưu hóa thông thường. Bắt đầu với các thuật toán và cấu trúc dữ liệu và di chuyển từ đó. Bằng cách sử dụng một hồ sơ, bạn có thể tìm thấy nơi nào được sử dụng nhiều thời gian nhất và nơi có thể thu được lợi nhuận đáng kể từ việc tối ưu hóa vi mô một vài dòng.

Điều này không phải vì ngôn ngữ buộc mọi người vào đó, mà mọi người chọn ngôn ngữ dựa trên những gì họ muốn làm. Nếu bạn muốn vắt chút hiệu năng cuối cùng ra khỏi chương trình, bạn sẽ không viết C # và biên dịch cho CLR và hy vọng trình biên dịch JIT (hoặc bất cứ điều gì) làm tốt công việc, bạn viết nó vào một cái gì đó mà bạn có thể kiểm soát phần lớn đầu ra. Bạn sẽ sử dụng C hoặc C ++ (và có thể là tập hợp con bị hạn chế của C ++) và nghiên cứu kết quả đầu ra của trình biên dịch và kết quả trình biên dịch.

Có rất nhiều người sử dụng C và C ++ và đừng quá lo lắng về các chi tiết dịch thuật, miễn là nó có vẻ đủ nhanh.


7

Các trò chơi liên tục đẩy các giới hạn của phần cứng?

Vâng, họ làm.

Nếu có, khi phần cứng được cải thiện, chúng ta có nên hy vọng các ngôn ngữ cấp cao hơn sẽ chiếm lĩnh ngành công nghiệp game?

Không thực sự - bởi vì khi phần cứng được cải thiện, người tiêu dùng cũng mong đợi các trò chơi cũng được cải thiện. Họ không mong đợi thấy chất lượng trò chơi tương tự được phát triển hiệu quả hơn vì các nhà phát triển đã sử dụng ngôn ngữ cấp cao hơn. Họ hy vọng sẽ có tất của họ bị thổi bay bởi mọi nền tảng mới.

Tất nhiên, có một số phong trào. Khi tôi còn là một cậu bé và lần đầu tiên quan tâm đến việc phát triển trò chơi, nó đã được lắp ráp bằng tay hoặc thoát khỏi địa ngục. Đây là kỷ nguyên 64. Ngày nay, tất nhiên, C ++ là ngôn ngữ chung của hầu hết các trò chơi phát triển. Và thực tế, chúng ta thậm chí đã thấy sự chuyển động trong việc sử dụng C ++ cho mã công cụ và ngôn ngữ kịch bản cấp cao hơn cho mã logic trò chơi. ví dụ LUA hoặc công cụ Unreal có ngôn ngữ UnrealScript riêng.


1
+1 một phần tốt của các nhà phát triển trò chơi ngày nay sử dụng lớp công cụ siêu tối ưu được viết bởi người khác, sau đó sử dụng một cái gì đó như Python hoặc C ++ ít tỉ mỉ hơn để kết hợp mọi thứ lại với nhau.
Morgan Herlocker

Có liên quan để lưu ý rằng Unreal hiện đã chuyển kịch bản của mình về phía trước, từ UnrealScript sang C ++. Đó là một điều tuyệt vời về C ++ hiện đại, nó cho phép bạn viết cả mã có độ trễ thấp được tối ưu hóa vi mô và logic mức cao ngắn gọn. Hầu hết các ngôn ngữ khác chỉ đạt được trình độ cao bằng cách hy sinh độ trễ và thường là hiệu suất.
leftaroundabout

7

Trong C #, "tối ưu hóa vi mô" được tán thành, hiếm gặp và thường lãng phí thời gian. Điều này dường như không phải là trường hợp phát triển trò chơi.

Nếu bạn chỉ có thể lắp ráp ứng dụng của mình với mã thư viện và mã thư viện cấp cao, chắc chắn rằng nó sẽ lãng phí thời gian. Viết nó bằng một ngôn ngữ diễn giải nếu bạn muốn trong trường hợp đó; sẽ không làm cho nhiều sự khác biệt. Nếu bạn đang cố gắng triển khai công cụ chiếu sáng toàn cầu tiên tiến, giúp loại bỏ nội dung cảnh động một cách nhanh chóng trong thời gian thực như CryEngine 3 , thì bạn không thể tránh khỏi nhu cầu tối ưu hóa vi mô.


0

"Trò chơi" là một thuật ngữ bao gồm. Nếu bạn có, giả sử, một MMORPG, tối ưu hóa nhỏ hơn sẽ ảnh hưởng đến nhiều người chơi.

Các game thủ, và có lẽ đã luôn luôn, đã quen với một lượng tương đối lớn những thứ xảy ra cùng một lúc, trong thời gian thực. Chắc chắn rồi; tại một thời điểm, có một Pacman hay Tetris đáp ứng là mục tiêu. Nhưng họ vẫn phải đáp ứng. Ngày nay, 3DMMORPG trên các kết nối mạng thả gói.

Tôi chắc chắn hiểu được muốn tối ưu hóa.


0

Trò chơi liên tục làm số lượng lớn xử lý nền. Ứng dụng kinh doanh không.


4
Đừng làm nhiều ứng dụng kinh doanh, phải không?
CHỈ CẦN HOẠT ĐỘNG CỦA TÔI NGÀY

2
Đủ để biết rằng các ứng dụng kinh doanh không cần cập nhật trạng thái 60 lần mỗi giây. Hơn nữa, tôi đặc biệt nói "liên tục."
dùng16764

2
Bạn đã bao giờ nghe nói về giao dịch thời gian thực chưa?
CHỈ CẦN HOẠT ĐỘNG CỦA TÔI đúng

0

Tôi luôn luôn tìm thấy thuật ngữ "tối ưu hóa vi mô", khá mơ hồ. Nếu một số thay đổi ở cấp độ hướng dẫn đối với bố cục bộ nhớ và các mẫu truy cập làm cho thứ gì đó nhanh hơn 80 lần từ một chuyên gia có kỷ luật đo các điểm nóng của họ mà không làm giảm độ phức tạp thuật toán, đó có phải là "tối ưu hóa vi mô" không? Đối với tôi đó là một "tối ưu hóa lớn" để làm cho một cái gì đó nhanh hơn 80 lần trong trường hợp sử dụng trong thế giới thực. Mọi người có xu hướng nói về những điều này như tối ưu hóa như vậy có hiệu ứng vi mô.

Tôi không còn làm việc trong gamedev nữa nhưng tôi làm việc ở VFX trong các lĩnh vực như theo dõi đường đi và tôi đã thấy nhiều triển khai của các cây BVH và KD ngoài đó xử lý ~ 0,5 triệu tia mỗi giây trên một cảnh phức tạp (và điều này là với đánh giá đa luồng). Nói một cách đơn giản, tôi có xu hướng thấy việc triển khai một BVH đơn giản trong bối cảnh chiếu tia ở mức dưới 1 triệu tia / giây ngay cả với đánh giá đa luồng. Ngoại trừ Embree có một BVH có thể xử lý hơn 100 triệu tia trên cùng một cảnh với cùng một phần cứng.

Điều đó hoàn toàn do "tối ưu hóa vi mô" mà Embree nhanh hơn 200 lần (cùng thuật toán và cấu trúc dữ liệu), nhưng tất nhiên lý do nó nhanh hơn nhiều là vì các nhà phát triển tại Intel đứng sau các chuyên gia dựa vào trình biên dịch và đo lường của họ và thực sự điều chỉnh các lĩnh vực quan trọng. Họ không thay đổi mã từ bỏ linh cảm và cam kết thay đổi đã cải thiện 0,000000001% với chi phí giảm đáng kể khả năng bảo trì. Đây là những tối ưu hóa rất chính xác được áp dụng trong những bàn tay khôn ngoan - chúng có thể là kính hiển vi về trọng tâm nhưng vĩ mô về mặt hiệu quả.

Đương nhiên với các yêu cầu về tốc độ khung hình thời gian thực của các trò chơi, tùy thuộc vào mức độ bạn đang làm việc với công cụ trò chơi (thậm chí các trò chơi được tạo bằng UE 4 thường được thực hiện ít nhất một phần trong kịch bản cấp cao, nhưng không, nói, những phần quan trọng nhất của động cơ vật lý), tối ưu hóa vi mô trở thành một yêu cầu thực tế trong một số lĩnh vực nhất định.

Một lĩnh vực rất cơ bản khác bao quanh chúng ta hàng ngày là xử lý hình ảnh, như làm mờ hình ảnh độ phân giải cao trong thời gian thực và có thể thực hiện các hiệu ứng khác trên chúng như một phần của quá trình chuyển đổi mà có lẽ chúng ta đã thấy ở đâu đó, thậm chí có thể là hiệu ứng hệ điều hành. Bạn không nhất thiết phải thực hiện các thao tác hình ảnh như vậy từ việc lặp lại qua tất cả các pixel của hình ảnh và mong đợi kết quả thời gian thực như vậy với tốc độ khung hình phù hợp. Nếu đó là CPU, chúng ta thường nhìn vào SIMD và một số điều chỉnh vi mô, hoặc chúng ta đang xem các trình tạo bóng GPU có xu hướng yêu cầu một loại tư duy cấp vi mô để viết hiệu quả.

Nếu có, khi phần cứng được cải thiện, chúng ta có nên hy vọng các ngôn ngữ cấp cao hơn sẽ chiếm lĩnh ngành công nghiệp game?

Tôi khá nghi ngờ rằng những tiến bộ phần cứng một mình có thể làm điều đó, bởi vì khi phần cứng tiến bộ, thì các hướng dẫn và công nghệ (ví dụ: vật lý trên GPU) cũng như các kỹ thuật và mong đợi của khách hàng về những gì họ muốn thấy và cạnh tranh, những cách thường khiến các nhà phát triển trở lại cấp thấp, như với ngay cả trường hợp các nhà phát triển web hiện đang viết các trình tạo bóng GLSL cấp thấp trong WebGL (phát triển web thuộc loại đặc biệt này thậm chí còn ở cấp độ thấp hơn so với một hoặc hai thập kỷ trước, vì GLSL là một ngôn ngữ giống như cấp độ C cực kỳ thấp và tôi không bao giờ có thể đoán được một hoặc hai thập kỷ trước rằng một số nhà phát triển web sẽ chấp nhận viết các trình tạo bóng GPU cấp thấp như vậy).

Nếu có một cách để các khu vực quan trọng về hiệu suất chuyển sang các ngôn ngữ cấp cao hơn, thì nó sẽ phải đến nhiều hơn từ phần mềm và trình biên dịch và các công cụ mà chúng tôi có sẵn như tôi thấy. Vấn đề với tôi trong bất kỳ tương lai gần nào không phải là phần cứng không đủ mạnh. Nó liên quan nhiều hơn đến cách chúng ta không thể tìm cách nói chuyện hiệu quả nhất mỗi khi nó thay đổi và tiến lên mà không cần quay trở lại ngôn ngữ của chính mình. Đây thực sự là tốc độ thay đổi phần cứng nhanh chóng khiến cho việc lập trình cấp cao trở nên khó nắm bắt đối với các lĩnh vực này như tôi thấy, vì nếu theo giả thuyết, phần cứng của chúng ta đã ngừng phát triển trong những thập kỷ sau,

Vui thay, những ngày này, khi tôi làm việc trong các lĩnh vực quan trọng về hiệu năng thực sự, tôi phải suy nghĩ phần nào mức độ thấp hơn so với khi tôi bắt đầu (mặc dù tôi đã bắt đầu trong kỷ nguyên Borland Turbo C DOS). Bởi vì hồi đó bộ đệm CPU gần như không tồn tại. Nó chủ yếu chỉ là DRAM và các thanh ghi, điều đó có nghĩa là tôi có thể tập trung nhiều hơn vào độ phức tạp thuật toán và viết các cấu trúc được liên kết như cây theo cách rất đơn giản mà không ảnh hưởng nhiều đến hiệu suất. Ngày nay, các chi tiết cấp thấp của bộ đệm CPU chi phối suy nghĩ của tôi gần như bằng chính thuật toán. Và tương tự như vậy, chúng ta có các máy đa lõi phải khiến chúng ta phải suy nghĩ về đa luồng và nguyên tử và đột biến và an toàn luồng và cấu trúc dữ liệu đồng thời, v.v. trong, không quá trực quan của con người) so với khi tôi bắt đầu.

Điều kỳ lạ đó dường như rất đúng với tôi bây giờ. Tôi nghĩ rằng tôi bị ảnh hưởng nhiều hơn bởi sự phức tạp và chi tiết cấp thấp của phần cứng ngày nay so với 30 năm trước, cố gắng hết sức để tháo kính hoài cổ. Tất nhiên chúng tôi có thể đã nói một chút về lắp ráp ở đây và phải đối phó với một số chi tiết đẫm máu như XMS / EMS. Nhưng đối với hầu hết các phần tôi muốn nói rằng có ít sự phức tạp và nhận thức về phần cứng và trình biên dịch mà tôi yêu cầu trước đó so với hiện tại khi tôi làm việc trong các lĩnh vực quan trọng về hiệu năng. Và điều đó gần như đúng với toàn bộ ngành công nghiệp nếu chúng ta gạt sang một bên như viếtif/else báo cáo theo cách dễ hiểu hơn một chút về con người và xem xét số lượng người nói chung ngày nay đang nghĩ nhiều hơn về các chi tiết phần cứng cấp thấp hơn (từ nhiều lõi đến GPU đến SIMD đến bộ đệm CPU và các chi tiết bên trong về cách trình biên dịch / trình thông dịch của họ / thư viện làm việc và vv).

Cấp cao! = Ít hiệu quả

Quay trở lại câu hỏi này:

Nếu có, khi phần cứng được cải thiện, chúng ta có nên hy vọng các ngôn ngữ cấp cao hơn sẽ chiếm lĩnh ngành công nghiệp game?

Đối với tôi nó không phải là về phần cứng. Đó là về tối ưu hóa và các công cụ. Khi tôi bắt đầu, mọi người thực tế đã viết tất cả các trò chơi trên máy console, và có một lợi thế hiệu năng thực sự sau đó đặc biệt là do thiếu trình biên dịch chất lượng tạo ra 6502.

Khi tối ưu hóa trình biên dịch C trở nên thông minh hơn trong việc tối ưu hóa, sau đó chúng bắt đầu đạt đến điểm mà mã cấp cao hơn được viết bằng C đang cạnh tranh và đôi khi còn vượt trội hơn mã được viết bởi các chuyên gia lắp ráp tốt nhất trong nhiều lĩnh vực (mặc dù không phải lúc nào) điều đó khiến cho nó trở thành một kẻ không có trí tuệ khi áp dụng C cho ít nhất là phần lớn mã hóa cho một trò chơi. Và một sự thay đổi tương tự dần dần xảy ra tại một số điểm với C ++. Việc áp dụng C ++ chậm hơn vì tôi nghĩ rằng việc tăng năng suất từ ​​lắp ráp sang C có thể đạt được thỏa thuận nhất trí từ các game thủ viết các trò chơi không tầm thường hoàn toàn trong ASM, trái ngược với việc chuyển từ C sang C ++.

Nhưng những thay đổi này không đến từ phần cứng trở nên mạnh mẽ hơn nhiều vì các trình tối ưu hóa cho các ngôn ngữ này sẽ khiến mức độ thấp hơn (mặc dù không phải lúc nào cũng hoàn toàn, có một số trường hợp tối nghĩa) đã lỗi thời.

Nếu bạn có thể tưởng tượng một kịch bản giả thuyết trong đó chúng ta có thể viết mã ở mã cấp cao nhất có thể tưởng tượng được, không phải lo lắng về đa luồng hoặc GPU hoặc bộ nhớ cache hoặc bất cứ điều gì tương tự (có thể không phải là cấu trúc dữ liệu cụ thể), và trình tối ưu hóa giống như trí thông minh nhân tạo thông minh và có thể tìm ra cách bố trí bộ nhớ hiệu quả nhất sắp xếp lại và nén dữ liệu của chúng tôi, tìm ra nó có thể sử dụng một số GPU ở đây và ở đó, song song một số mã ở đây và ở đó, sử dụng một số SIMD, có thể tự cấu hình và tiếp tục tối ưu hóa IR của nó như con người chúng ta đã phản ứng với các điểm nóng hồ sơ, và nó đã làm điều đó theo cách đánh bại các chuyên gia giỏi nhất thế giới, thì sẽ không có gì phải đắn đo ngay cả với những người làm việc trong các lĩnh vực quan trọng nhất về hiệu suất để áp dụng nó ... và đó là một tiến bộ đến từ tối ưu hóa thông minh lố bịch, không phải phần cứng nhanh hơn.


0

Trong C #, "tối ưu hóa vi mô" được tán thành, hiếm gặp và thường lãng phí thời gian. Điều này dường như không phải là trường hợp phát triển trò chơi.

Bạn có một vấn đề về thuật ngữ ở đây. Bạn đang sử dụng các từ một cách chính xác, nhưng các nhà phát triển trò chơi và doanh nhân đang sử dụng cùng một thuật ngữ theo hai cách rất khác nhau.

Đối với doanh nghiệp, "tối ưu hóa vi mô" có nghĩa là tăng tốc một bước rất nhỏ trong quy trình kinh doanh tổng thể được thực hiện bởi phần mềm. Lý do nó được tán thành thường là một trong:

  1. Thêm tiền chi tiêu cung cấp cùng một giá trị kinh doanh, với tốc độ nhanh hơn một vài giây. Tiền tiết kiệm được trong các cải tiến tốc độ đến từ một nhóm tiền khác nhau (thời gian của người dùng), do đó, doanh nghiệp thường không được hưởng lợi từ nỗ lực mà họ bỏ ra, khách hàng làm chi phí cho doanh nghiệp.
  2. Thông thường các lập trình viên kinh doanh có tầm nhìn kém trong quy trình kinh doanh tổng thể, do đó, tối ưu hóa một bước duy nhất có thể không mang lại lợi ích tốt cho quy trình chung. Ví dụ: nếu bạn thực hiện 3% quá trình nhanh hơn 10 lần, bạn đã tăng tốc toàn bộ quá trình 2,7%.
  3. Thông thường, doanh nghiệp có một danh sách lớn các công việc còn lại có một số giá trị kinh doanh và sẽ ưu tiên thêm giá trị đó thay vì phân phối cùng một giá trị trong thời gian nhỏ hơn (có thể).

Phát triển trò chơi là một con thú khác nhau. "Tối ưu hóa vi mô" đang tiết kiệm một lượng nhỏ thời gian trong một chức năng hoặc thói quen.

  1. Hệ thống chơi game có xu hướng được tổ chức theo chu kỳ kết xuất. Hiện tại, tiêu chuẩn vàng là 60 khung hình mỗi giây, do đó, mọi thứ sẽ được tính toán cần phải được thực hiện và hiển thị trên màn hình trong 1/60 giây.
  2. Điều này có nghĩa là thường các thói quen tương tự được gọi là hàng ngàn đến hàng trăm ngàn lần trong suốt quá trình của một trò chơi. Do đó, một cải tiến 10 lần trong một chức năng duy nhất được phóng to về giá trị bằng số lần lợi ích của cải tiến sẽ được cảm nhận.
  3. Việc không đạt được tốc độ kết xuất có ảnh hưởng đến việc trình bày trò chơi. Video sẽ trở nên chói tai, các nhân vật sẽ hoạt hình với những cú nhảy và nhảy thay vì chuyển động lỏng. Điều này ngay lập tức đưa người chơi thoát khỏi sự đắm chìm của trò chơi và đi vào cõi nghi vấn giá trị của trò chơi.

Vì vậy, trong kinh doanh, không ai quan tâm nếu hình thức của quy trình kinh doanh 4 bước trình bày trong 0,6 giây hoặc 0,5 giây. Trong khi chơi game, một người quan tâm nếu một thói quen mất 200ms có thể được giảm xuống để thực hiện trong 100ms.

Đó là tất cả về giá trị được phân phối cho khách hàng, nhu cầu của khách hàng và tỷ lệ lợi ích chi phí của thay đổi.


-1

Nó liên quan đến lý do tại sao công cụ đó được chọn cho một công việc cụ thể.

Người chơi gôn sẽ bị ám ảnh bởi hướng và lực mà họ áp dụng với gậy putter, không quá nhiều khi họ đang sử dụng trình điều khiển.

Tại sao? Bởi vì chúng là những kiểu chụp khác nhau. Đối với một ổ đĩa, bạn muốn có được nó trong fairway với khoảng cách tối đa. Đối với một cú putt, bạn muốn có được nó chính xác trong lỗ.

Áp dụng tương tự ở đây. Các nhà phát triển trò chơi chọn C ++ vì nó cho phép họ kiểm soát hiệu suất của các hoạt động khác nhau. Nếu bạn đã chọn điều đó, bạn sẽ muốn tận dụng nó.


-3

Hầu hết các ứng dụng kinh doanh được viết như các công cụ trong nhà. Kỳ vọng về khả năng sử dụng của công cụ này thấp hơn nhiều so với trường hợp phần mềm được bán cho khách hàng đại chúng. Một điều khá phổ biến là một ứng dụng kinh doanh nội bộ có các menu và hộp thoại phản ứng chậm với các lần nhấp chuột, các cửa sổ vẽ lại với độ trễ hoặc thậm chí là GUI được viết bằng Swing (kinh dị!). Điều này do một số lý do (điều quan trọng là phần mềm có thể tùy chỉnh hơn là rất "linh hoạt", người dùng phần mềm không có lựa chọn nên sử dụng hay không sử dụng phần mềm trong câu hỏi, những người thực hiện quyết định cài đặt phần mềm không tự sử dụng nó ...). Hậu quả của tất cả những điều này là các nhà phát triển công cụ này không dành nhiều thời gian để tối ưu hóa khả năng phản hồi của ứng dụng, nhưng quan tâm rất nhiều về khả năng mở rộng và số lượng tính năng. Cơ sở khách hàng khác nhau => mục tiêu thiết kế khác nhau => phương pháp khác nhau.

Lưu ý rằng một ứng dụng kinh doanh nhắm mục tiêu đối tượng đại chúng, chẳng hạn như Excel, được tối ưu hóa rất nhiều.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.