15:55 <+bridge> [ddnet] what about using re.split? E.g.: 15:55 <+bridge> [ddnet] ```python 15:55 <+bridge> [ddnet] import re, itertools 15:55 <+bridge> [ddnet] func deslugify4(name): 15:55 <+bridge> [ddnet] x = re.split('-([\d]+)-', 'bob-95-fasul') 15:55 <+bridge> [ddnet] return ''.join( 15:55 <+bridge> [ddnet] n + chr(int(i)) 15:55 <+bridge> [ddnet] for (n, i) in zip(x[::2], x[1::2]) 15:55 <+bridge> [ddnet] ) + (x[-1] if len(x) % 2 == 1 else '') 15:55 <+bridge> [ddnet] ``` 15:55 <+bridge> [ddnet] Or, longer and likely more understandable: 15:56 <+bridge> [ddnet] what about using re.split? E.g.: 15:56 <+bridge> [ddnet] ```python 15:56 <+bridge> [ddnet] import re, itertools 15:56 <+bridge> [ddnet] func deslugify4(name): 15:56 <+bridge> [ddnet] x = re.split('-([\d]+)-', name) 15:56 <+bridge> [ddnet] return ''.join( 15:56 <+bridge> [ddnet] n + chr(int(i)) 15:56 <+bridge> [ddnet] for (n, i) in zip(x[::2], x[1::2]) 15:56 <+bridge> [ddnet] ) + (x[-1] if len(x) % 2 == 1 else '') 15:56 <+bridge> [ddnet] ``` 15:56 <+bridge> [ddnet] Or, longer and likely more understandable: 15:56 <+bridge> [ddnet] ```python 15:56 <+bridge> [ddnet] func deslugify4(name): 15:56 <+bridge> [ddnet] result = '' 15:56 <+bridge> [ddnet] for (i, part) in enumerate(re.split('-([\d]+)-', name)): 15:56 <+bridge> [ddnet] if i % 2 == 0: 15:56 <+bridge> [ddnet] result += part 15:57 <+bridge> [ddnet] else: 15:57 <+bridge> [ddnet] result += chr(int(part)) 15:57 <+bridge> [ddnet] return result 15:57 <+bridge> [ddnet] ``` 15:57 <+bridge> [ddnet] what about using re.split? E.g.: 15:57 <+bridge> [ddnet] ```python 15:57 <+bridge> [ddnet] import re, itertools 15:57 <+bridge> [ddnet] func deslugify4(name): 15:57 <+bridge> [ddnet] x = re.split('-([\d]+)-', name) 15:57 <+bridge> [ddnet] return ''.join( 15:57 <+bridge> [ddnet] n + unichr(int(i)) 15:57 <+bridge> [ddnet] for (n, i) in zip(x[::2], x[1::2]) 15:57 <+bridge> [ddnet] ) + (x[-1] if len(x) % 2 == 1 else '') 15:57 <+bridge> [ddnet] ``` 15:57 <+bridge> [ddnet] Or, longer and likely more understandable: 15:57 <+bridge> [ddnet] ```python 15:57 <+bridge> [ddnet] func deslugify4(name): 15:57 <+bridge> [ddnet] result = '' 15:57 <+bridge> [ddnet] for (i, part) in enumerate(re.split('-([\d]+)-', name)): 15:57 <+bridge> [ddnet] if i % 2 == 0: 15:57 <+bridge> [ddnet] result += part 15:57 <+bridge> [ddnet] else: 15:57 <+bridge> [ddnet] result += unichr(int(part)) 15:57 <+bridge> [ddnet] return result 15:57 <+bridge> [ddnet] ``` 16:02 <+bridge> [ddnet] yeah, that should have nicer performance 16:31 <+bridge> [ddnet] @deen what was the issue with recvmmsg? 16:34 <+bridge> [ddnet] it seemed to work but was more complex and didn't seem to offer any performance for the attacks we had at that time 20:13 <+bridge> [ddnet] @Lexin what was your CPU btw? 20:56 <+bridge> [ddnet] trash 20:56 <+bridge> [ddnet] some sort of notebook i5 21:13 <+bridge> [ddnet] @Lexin ever tried to make energy option to max. performance in windows settings? 21:20 <+bridge> [ddnet] yeah, i have that