From 6fff3c54be91dbbfe5e3ffca4204ad0378d70b7d Mon Sep 17 00:00:00 2001 From: brain Date: Sat, 30 Dec 2006 15:11:40 +0000 Subject: Tons of optimization of WriteChannel, WriteChannelWithServ, WriteCommon etc, dont call userrec::GetFullHost or snprintf for every item, call it just once. Turns O(n) calls for every write into O(~1) calls per write. Remove some debug from the socketengines which makes debugging hard on large channels (write availability message) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6171 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/channels.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/channels.cpp') diff --git a/src/channels.cpp b/src/channels.cpp index ea7edd71f..df1f77976 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -612,14 +612,17 @@ void chanrec::WriteChannel(userrec* user, char* text, ...) void chanrec::WriteChannel(userrec* user, const std::string &text) { CUList *ulist = this->GetUsers(); + char tb[MAXBUF]; if (!user) return; + snprintf(tb,MAXBUF,":%s %s",user->GetFullHost(),text.c_str()); + for (CUList::iterator i = ulist->begin(); i != ulist->end(); i++) { if (IS_LOCAL(i->second)) - user->WriteTo(i->second,text); + i->second->Write(std::string(tb)); } } @@ -684,6 +687,7 @@ void chanrec::WriteAllExcept(userrec* user, bool serversource, char status, CULi void chanrec::WriteAllExcept(userrec* user, bool serversource, char status, CUList &except_list, const std::string &text) { CUList *ulist; + char tb[MAXBUF]; switch (status) { @@ -701,6 +705,8 @@ void chanrec::WriteAllExcept(userrec* user, bool serversource, char status, CULi break; } + snprintf(tb,MAXBUF,":%s %s",user->GetFullHost(),text.c_str()); + for (CUList::iterator i = ulist->begin(); i != ulist->end(); i++) { if ((IS_LOCAL(i->second)) && (except_list.find(i->second) == except_list.end())) @@ -708,7 +714,7 @@ void chanrec::WriteAllExcept(userrec* user, bool serversource, char status, CULi if (serversource) i->second->WriteServ(text); else - i->second->WriteFrom(user,text); + i->second->Write(std::string(tb)); } } } -- cgit v1.3.1-10-gc9f91