Pottus link said:
Callback hooking will have an effect too marginal to make any significant difference whereas you have all your systems in single callbacks you end up with a cluster of code. A good design isn't going affect the speed of your gamemode in any negative way. I don't know if you built a gamemode but from my experience I know that fundamental design is far superior to any marginal loss of efficiency related to callback hooking.
I've been working on a project; on and off for around 3 years. It uses y_hooks (modified YSI library by me); and finally I've been able to make it stable and efficient in hooking (currently over 250+ modules into one core #include base main.pwn). Since your able to keep things organized, in the end, essentially its more optimized. On the other-hand, major clusters of code into each callback.. theoretically its the most efficient; but you have to account for the human mind flaw. Due to the massive demand for new features, you'd likely break a scroll wheel going thru each massive function's section, to edit; modify etc. This opens another flaw of forgetting to remove certain calls, or loops that were a part of one feature.
In the end, this is my simple way of summarizing. In practicality (or philosophically, depending on your perspective) massive .pwn with 2000+ line callbacks is most efficient. In actuality of the ongoing development of a major gamemode, the module based hooking system is best.
One last point I'd like to add. One large .pwn file has another flaw, accessibility for git repository. Viewing revision change-sets in a browser would likely take ages for the web browser to fully display what changes were made. On the other-hand; module based projects would be organized per feature, so debugging would be much more peace of mind. You would know exactly which change-set module to select, and essentially have a pre-filtered changelog to pinpoint the source of the issue from.
Sorry for the long post, I am just very interested in how the module style programming system; introduced into PAWN has made major changes on efficiency of development. Even more crucial to multi-party development teams.
If anyone would like to get more in-depth into this discussion; feel free to add me via Telegram (almost identical to Skype; with much more security, and best of all.. its available for all operating systems!) - Telegram username: Chaprnks