Dirito
如题,假设一个插件有100个类,都实现了Listener,他们都去检测玩家放置方块事件,但是什么都不执行,这样的话玩家不断防止方块会造成性能问题吗?

DJ丶隔壁老王
??????

DJ丶隔壁老王
??????

所以你为何要怎么做

zlzchuyue
基本没影响,可以忽略

www2844194096
不会吧              

AlbertBlue
EventHandler后面加上 (ignoreCancelled = true) 忽略取消的事件,这样就不会处理被其他插件取消的事件

Hueihuea

这块海滩有5.999999999999999亿亿粒沙子
现在少了6粒沙子
影响你建个沙堡吗

嗷呜魔王
不会的,如果类里面没有执行内容的话,这就和做了100次调用是一样的,唯一可能造成性能损耗的是 Bukkit 需要把你整个事件类存起来,然后调用的时候需要对类和里面的事件 handler 进行检查,然后依照优先级进行排序执行。
但是这种对性能的损耗非常小。举个栗子,玩家移动一次,服务器所需要做的事情比排序事件 handler 需要做的事儿可多多了。所以不需要担心。但是这种写法不是很优雅,类似暴力穷举的感jio

vvvbbbcz
性能影响是有的,但都是纳秒、微秒级别的,基本上可以忽略。(PS:CPU处理一个指令的时间约为0.22ns)
但在实际开发中肯定不能这么写。

洞穴夜莺
会影响性能,但不会影响复杂度
简而言之:忽略不计

LuckYYD_ZRr69
以现在的硬件机能可以忽略不计了,但是相当浪费内存,每次都要被实例化然后放进堆内存,调用的时候空做一次方法的出入栈然后对象生命周期结束等待GC,理论上这样会导致虚拟机GC更加频繁从而产生卡顿。具体能不能导致频繁full gc要看收集器和虚拟机的参数配置了,总的来说100个类太少,看不出来特别明显的效果

ARSpark
影响基本可以忽略了
Bukkit运行时,每时每刻都有几万个类处于被加载状态中(jstat可查),并且还有几百个类正在被加载或卸载,100个在服务器启动时就初始化好了的类能造成什么影响?(相比Item这种巨型常量池的类)