Trong một trong những ứng dụng của tôi, tôi đang sử dụng như sau:Class.forName() bộ nhớ đệm
public void calculate (String className)
{
...
Class clazz = Class.forName(className);
...
}
Chức năng này được gọi là nhiều lần/giây. Có khoảng 10 tên lớp có thể. Và trong khi tôi nhận ra có một số bộ nhớ đệm nội bộ bên trong chức năng này, Tôi nghĩ rằng bộ nhớ đệm này chỉ có sẵn ở cấp bản địa.
Vì lý do này, tôi bắt đầu tự hỏi liệu tôi có nên thêm bộ nhớ đệm của riêng mình hay không.
private static Map<String,Class> classMap;
public void calculate (String className)
{
...
Class clazz = classMap.get(className);
if (clazz == null)
{
clazz = Class.forName(className);
if (classMap == null) classMap = new HashMap<String, Class>(40);
classMap.put(className, clazz);
}
...
}
Đây có phải là lợi ích hiệu suất hay không thực sự tạo nên sự khác biệt?
Cảm ơn bạn trước
Tôi có thể nghĩ ra một cách để tìm ra ... – joev
Bạn có hồ sơ ứng dụng của mình không? Nó có chứng minh là một nút chai? Nếu không, tôi sẽ không triển khai bộ nhớ cache cho đến khi cần. – Thomas
Bạn có thấy các chuỗi đã bị chặn trong một kết xuất chuỗi không? Tôi thấy chúng trong khi lược tả ứng dụng của tôi, vì vậy tôi nghĩ Class.forName() đáng để lưu vào bộ nhớ đệm. – mparaz