**Tại sao n ++ nhanh hơn n = n + 1? Và cuối cùng là ta nên dùng gì ? **> **Các mã được tạo ra là hoàn toàn là để xử lí chung một yêu cầu, tuy nhiên vấn đề ở đây chính là hiệu suất.Vậy tại sao ta nên sử dụng n++ : *** **Tốc độ thực thi sẽ nhanh hơn hoặc bằng so với n = n +1.*** **Kích thước chữ ngắn ==> mã nhị phân nhỏ hơn hoặc bằng n = n+1.*** **Mã nguồn của nó cũng nhỏ gọn hơn .*** **Nhanh hơn n = n + 1 nếu bạn không tối ưu hóa mã của mình.*** **Quá trình nạp, ghi, tải bộ nhớ nhanh hơn.****Tuy nhiên, có một thứ còn nhanh hơn nữa, đó là ++n.Trong một số trường hợp thông thường thì ++n và n++ chả có gì là khác biệt nhau mấy, nhưng xét trong một số trường hợp như **iterator **hoặc **smart pointer vì ** n++ trả về giá trị cũ và giá trị đó phải được lưu lại.Còn ++n thì không. ****Tóm lại, tập thói quen dùng n++ và ++n đôi khi cũng làm tăng hiệu suất trong mã của bạn.****Nguồn: Quora | [**https://www.quora.com/Why-is-n++-faster-than-n-n+1](https://www.quora.com/Why-is-n++-faster-than-n-n+1)#j2team_programming
Người đăng: Hồ Văn Chương vào Chủ nhật, 23 tháng 2, 2020
Các mã được tạo ra là hoàn toàn là để xử lí chung một yêu cầu, tuy nhiên vấn đề ở đây chính là hiệu suất.Vậy tại sao ta nên sử dụng n++ :
- Tốc độ thực thi sẽ nhanh hơn hoặc bằng so với n = n +1.
- Kích thước chữ ngắn ==> mã nhị phân nhỏ hơn hoặc bằng n = n+1.
- Mã nguồn của nó cũng nhỏ gọn hơn .
- Nhanh hơn n = n + 1 nếu bạn không tối ưu hóa mã của mình.
- Quá trình nạp, ghi, tải bộ nhớ nhanh hơn.
VÍ DỤ:
Đây là mã C
- int binary(int i){
- i = i + 1;
- return i;
- }
- int unary(int i){
- i++;
- return i;
- }
Trình đang sử dụng:
- rountree4@cuyahoga ~$ clang —version
- Apple LLVM version 7.0.0 (clang–700.1.76)
- Target: x86_64–apple–darwin15.6.0
- Thread model: posix
Nhị phân:
- _binary: ## @binary
- .cfi_startproc
- ## BB#0:
- pushq %rbp
- Ltmp0:
- .cfi_def_cfa_offset 16
- Ltmp1:
- .cfi_offset %rbp, –16
- movq %rsp, %rbp
- Ltmp2:
- .cfi_def_cfa_register %rbp
- ## kill: EDI<def> EDI<kill> RDI<def>
- leal 1(%rdi), %eax
- popq %rbp
- retq
- .cfi_endproc
unary.
- _unary: ## @unary
- .cfi_startproc
- ## BB#0:
- pushq %rbp
- Ltmp3:
- .cfi_def_cfa_offset 16
- Ltmp4:
- .cfi_offset %rbp, –16
- movq %rsp, %rbp
- Ltmp5:
- .cfi_def_cfa_register %rbp
- ## kill: EDI<def> EDI<kill> RDI<def>
- leal 1(%rdi), %eax
- popq %rbp
- retq
- .cfi_endproc