- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用这样的结构来测试是否按下了所需的键:
def eventFilter(self, tableView, event):
if event.type() == QtCore.QEvent.KeyPress:
key = event.key()
if event.modifiers() in (QtCore.Qt.NoModifier, QtCore.Qt.KeypadModifier):
if key in (QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return):
self.menu.editItem.trigger()
return True
我知道“过早的优化是万恶之源”,但我认为 eventFilter
经常被调用以考虑其优化。
我的担忧:
if key in (QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return)
在每次运行时进行双重查找: 1. 在 QtCore 中查找 Qt
属性
模块; 2. 在Qt
模块中找到Key_Enter
tài sản.if key in (QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return)
这会在每次运行时构造元组。元组中的搜索是顺序的 - 使用 frozenset
更好?您如何处理此类情况?不在乎?
1 Câu trả lời
您的代码:
def eventFilter(self, tableView, event):
if event.type() == QtCore.QEvent.KeyPress:
key = event.key()
if event.modifiers() in (QtCore.Qt.NoModifier, QtCore.Qt.KeypadModifier):
if key in (QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return):
self.menu.editItem.trigger()
return True
正如我在对@interjay 的评论中提到的,对于任何类型的 UI 事件都可能多次调用此函数,如果您有许多这样的过滤器,它们可能会导致 UI 缓慢。如果您想至少优化到第一个 if 测试,则将 QtCore.QEvent.KeyPress
的本地定义移动到默认参数值中:
def eventFilter(self, tableView, event,
FILTER_EVENT_TYPE=QtCore.QEvent.KeyPress
):
if event.type() == FILTER_EVENT_TYPE:
if event.modifiers() in (QtCore.Qt.NoModifier, QtCore.Qt.KeypadModifier):
key = event.key()
if key in (QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return):
self.menu.editItem.trigger()
return True
(我还将对 event.key() 的函数调用移动到对 event.modifiers() 的测试之后. )
像这样的默认参数在导入模块时在函数编译时计算一次,而不是每次调用一次,所以你查找QtCore.QEvent.KeyPress
Sẽ加速。您当然可以将其发挥到极致:
def eventFilter(self, tableView, event,
FILTER_EVENT_TYPE=QtCore.QEvent.KeyPress
FILTER_MODIFIERS=(QtCore.Qt.NoModifier, QtCore.Qt.KeypadModifier),
FILTER_KEYS=(QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return)
):
if (event.type() == FILTER_EVENT_TYPE and
event.modifiers() in FILTER_MODIFIERS and
event.key() in FILTER_KEYS):
self.menu.editItem.trigger()
return True
现在您不仅优化了模块-对象-属性查找,还优化了元组构造,正如@AndrewDalke 提到的,我对 TRONG
的测试表明元组比设置更快大约 3 或 4 个元素的大小。当条件的任何部分失败时,单个条件仍会短路,因此如果类型不是按键,您将不会收到对 event.modifiers 或 event.key 的调用。
编辑:我喜欢@ekhumoro 对键和修饰符的耦合测试,这是将它合并到我的代码中的样子:
def eventFilter(self, tableView, event,
FILTER_EVENT_TYPE=QtCore.QEvent.KeyPress
FILTER_KEY_MODIFIERS=((QtCore.Qt.Key_Return, QtCore.Qt.NoModifier),
(QtCore.Qt.Key_Enter, QtCore.Qt.KeypadModifier),
)
):
if (event.type() == FILTER_EVENT_TYPE and
(event.key(), event.modifiers()) in FILTER_KEY_MODIFIERS):
self.menu.editItem.trigger()
return True
关于python - 优化 `in`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8655224/
So sánh mã: const char x = 'a'; std::cout > (0C310B0h) 00C3100B add esp,4 và const i
Xin chào, tôi đang sử dụng Matlab Optimization Solver nhưng tôi gặp vấn đề với chương trình này. Tôi nhận được thông báo fmincon đã dừng vì giá trị hàm mục tiêu nhỏ hơn giá trị mặc định cho giới hạn hàm mục tiêu và mức độ thỏa mãn ràng buộc nằm trong giá trị mặc định cho dung sai ràng buộc. Tôi cũng nhận được tin nhắn sau. Cảnh báo: Khoảnh khắc
Việc tối ưu hóa Visual Studio giúp tôi tiết kiệm rất nhiều thời gian để thiết lập và chạy nó, và tôi thấy khó có thể quay lại Eclipse khi phải phát triển J2EE. Vì vậy, tôi cũng muốn biết liệu mọi người có mẹo hay thủ thuật nào để
Tình huống như sau: Trong bảng tính Excel của tôi, có một cột chứa các mục có dạng 1-tên. Vì số đó cũng có thể có hai chữ số nên tôi muốn loại bỏ những chữ số đó. Đây không phải là vấn đề thực sự, tôi đã làm cho nó hoạt động, chỉ là hiệu suất thì tệ quá. Bây giờ chương trình của tôi nhập vào khoảng
Điều này có tạo ra sự khác biệt nào không: $(".topHorzNavLink").click(function() { var theHoverContainer = $("#hoverContainer");
Câu hỏi này đã có câu trả lời: Đã đóng cách đây 11 năm. Có thể trùng lặp: Chi phí của '$(this)' là bao nhiêu? Tôi thường thấy $(this) tham chiếu đến cùng một
Tôi vừa hoàn thành một dự án phát triển lớn. Chúng tôi có thời gian eo hẹp nên rất nhiều hoạt động tối ưu hóa đã bị "hoãn lại". Bây giờ đã đến thời hạn, chúng ta sẽ quay lại và cố gắng tối ưu hóa mọi thứ. Câu hỏi của tôi là: những điều quan trọng nhất bạn cần lưu ý khi tối ưu hóa một trang web jQuery là gì? Hoặc, tôi
Vì vậy, tôi đã viết trò chơi bằng JavaScript (không phải trò chơi trên web mà là công cụ trò chơi sử dụng JavaScript, vốn là ngôn ngữ lập trình). Thật không may, công cụ JavaScript của trò chơi là SpiderMonkey
Đây là truy vấn SQL tôi đang sử dụng trong trang tôi đang xây dựng. Hiện tại nó chạy trong khoảng 8 giây và trả về 12000 bản ghi, khá chính xác, nhưng tôi tự hỏi liệu bạn có thể đưa ra gợi ý nào về cách làm cho nó chạy nhanh hơn không? CHỌN DISTINCT Adv
Làm thế nào để tối ưu hóa điều này? CHỌN e.attr_id, e.sku, a.value TỪ product_attr LÀ e, product_attr_text LÀ a NƠI e.attr
Tôi đang sử dụng một cấu trúc như thế này để kiểm tra xem phím mong muốn đã được nhấn hay chưa: def eventFilter(self, tableView, event): if event.type() == QtCore.QEven
Tôi đang sử dụng JavaScript để tính toán tất cả các tổ hợp cho một trận đấu cầu lông đôi từ danh sách người chơi nhất định. Mỗi người chơi sẽ hợp tác với những người khác. VÍ DỤ. Nếu tôi có những người chơi sau a, b, c, d. Sự kết hợp của chúng có thể là: a & b V c
Có vẻ như tôi không thể tìm ra cách để sử dụng JS này. Chức năng cuộn hoạt động nhưng không thể ẩn. Có cách nào để thực hiện việc này với ít dòng mã hơn không? Tôi muốn mũi tên .down-arrow mờ dần sau 50px
Câu hỏi của tôi liên quan đến các tệp CSS (Cascading Style Sheet) được tối ưu hóa nâng cao để sử dụng trong sản xuất. Thật là một trình tối ưu hóa/thu nhỏ css mới nhất và hoàn thiện nhất (sẵn sàng sử dụng trong các thành phần trực tiếp) không chỉ cung cấp khả năng loại bỏ khoảng trắng và ngắt dòng mà còn cung cấp các tính năng nâng cao như loại bỏ các thuộc tính thừa, hợp nhất
Tôi đã đọc điều này: Trình duyệt sẽ truy xuất tất cả các tài nguyên được yêu cầu trong phần HTML trước khi bắt đầu hiển thị. Nếu bạn đặt yêu cầu của mình trong một phần thay thế, thì việc hiển thị trang và tải xuống tài nguyên có thể diễn ra song song. Bạn nên yêu cầu càng nhiều tài nguyên từ thiết bị di động càng tốt.
Tôi đang làm việc trên một số mã C++ hiện có có vẻ được viết kém và có nhiều lệnh gọi thường xuyên. Tôi đang tự hỏi liệu mình có nên dành thời gian để thay đổi nó hay trình biên dịch đã tối ưu hóa vấn đề rồi. Tôi đang sử dụng Visual Studio 2008. Đây là một
Tôi đang cố gắng kết xuất 3 hình tứ giác (1 hình nền, 2 hình ảnh động) bằng OpenGL. Tôi có đoạn mã sau: void GLRenderer::onDrawObjects(long p_dt) {
Tôi có khai báo sau: isEnabled = false; if(foo(arg) && isEnabled) { .... } public boolean foo(arg) { some
(I) Hiểu cấu trúc chỉ mục theo cách đơn giản và dễ dàng. Trên thực tế, bạn có thể coi chỉ mục như một thư mục đặc biệt. Microsoft SQL SERVER cung cấp hai loại chỉ mục: chỉ mục cụm (còn gọi là chỉ mục cụm, chỉ mục cụm) và chỉ mục không cụm (non-clustered index).
1. Giải pháp tối ưu hóa CSS được viết ở trên chưa được đề cập trước đó, vì vậy chúng ta hãy tóm tắt lại ở phần sau. 2. Kế hoạch tối ưu cụ thể 2.1. Hiệu suất tải 1. Nén CSS: Đóng gói CSS đã viết có thể giảm đáng kể khối lượng. 2. CSS đơn phong cách: dưới đây cần thiết
Tôi là một lập trình viên xuất sắc, rất giỏi!