2009-03-13 55 views
10

Khai báo tên biến, bao nhiêu (nếu có) tác động nào chiều dài của tên của nó có đến tổng bộ nhớ của ứng dụng? Có chiều dài tối đa không? Hay chúng ta tự do xây dựng trên các biến của chúng ta (và các thể hiện) nhiều như chúng ta muốn?Cách bạn đặt tên biến có ảnh hưởng đến việc sử dụng bộ nhớ của một ứng dụng không?

+0

+1 - tôi chuẩn bị hỏi điều này. – mauris

Trả lời

20

Điều đó tùy thuộc vào ngôn ngữ.

Nếu bạn đang sử dụng C++ hoặc C, nó không có tác động.

Nếu bạn đang sử dụng ngôn ngữ thông dịch, bạn sẽ chuyển mã nguồn xung quanh, để nó có thể có tác động đáng kể.

Nếu bạn đang sử dụng ngôn ngữ được biên dịch để biên dịch sang ngôn ngữ trung gian, chẳng hạn như Java hoặc bất kỳ ngôn ngữ .NET nào, thì thường là tên biến, tên lớp, tên phương thức, v.v ... đều là một phần của IL. Có tên phương thức dài hơn sẽ có tác động. Tuy nhiên, nếu sau đó bạn chạy qua một obfuscator, điều này biến mất, kể từ khi obfuscator sẽ đổi tên tất cả mọi thứ (thường) tên rất ngắn. Đây là lý do tại sao obfuscation thường mang lại hiệu quả hoạt động.

Tuy nhiên, tôi thực sự khuyên bạn nên sử dụng tên biến/tên/lớp mô tả dài, mô tả. Điều này làm cho mã của bạn dễ hiểu, dễ bảo trì và có thể đọc được - về lâu dài, vượt xa bất kỳ sự hoàn hảo nhẹ nào. lợi ích.

+0

+1 để xem xét IL –

+0

IL là cách quá quan trọng để bỏ qua. Java, C#, VB.Net là những cái bạn nghĩ đến, nhưng ngay cả python cũng không được hiểu, nó có dạng riêng của nó là IL ... –

+0

Tên có thể là một phần của IL, nhưng trong .NET ít nhất, IL được JIT'ed vào ngôn ngữ máy, do đó, một lần nữa, không có tên biến. –

5

Nó không có tác động trong ngôn ngữ được biên dịch.

0

Trong các ngôn ngữ được biên dịch, hầu như không chắc chắn; mọi thứ trở thành biểu tượng trong bảng biểu tượng. Trong các ngôn ngữ thông dịch, câu trả lời cũng không, với một vài ngoại lệ cực kỳ hiếm (trong một số phiên bản cũ hơn của Python sẽ có sự khác biệt, ví dụ).

0

MSVC++ cắt bớt tên biến thành 255 ký tự. Độ dài tên biến không ảnh hưởng đến kích thước mã được biên dịch.

0

Như đã nêu khác, tên biến sẽ biến mất trong các ngôn ngữ được biên dịch. Tôi tin rằng tên biến cục bộ trong .Net có thể bị loại bỏ. Nhưng nói chung, ngay cả trong một ngôn ngữ diễn giải, tiêu thụ bộ nhớ của tên biến là không đáng kể, đặc biệt là trong ánh sáng của những lợi thế của tên biến tốt.

0

Trên thực tế trong các tên biến dài của ASP.NET cho các điều khiển và trang chính, hãy thêm vào kích thước của HTML được tạo. Điều này sẽ thêm một số bộ nhớ bổ sung không đáng kể để đệm luồng đầu ra, nhưng hiệu ứng sẽ được chú ý nhiều nhất trong vài trăm byte bổ sung mà bạn gửi qua mạng.

0

Trong Python, các tên dường như được thu thập vào một số bảng đơn giản; mỗi tên xuất hiện chính xác một lần trong mỗi đối tượng mã. Tên không có tác động đến hiệu suất.

Vì mục đích thống kê, tôi đã xem xét hàm 20 dòng là giải pháp cho vấn đề Project Euler 15. Hàm này đã tạo đối tượng mã 292 byte. Nó sử dụng 7 tên riêng biệt trong bảng tên. Bạn sẽ phải sử dụng tên biến 41 ký tự để tăng gấp đôi kích thước của tệp mã byte.

Đó sẽ là tác động duy nhất - các tên cực lớn có thể làm chậm thời gian tải cho mô-đun của bạn.

Các vấn đề liên quan