]> err.no Git - sope/blob - sope-core/NGExtensions/TODO
Drop apache 1 build-dependency
[sope] / sope-core / NGExtensions / TODO
1 TODO
2 ====
3
4 - remove dependency on FoundationExt on GNUstep Base and Cocoa
5   - added source of FileObjectHolder, NSRunLoop+FileObjects
6
7 NSString+Encoding.m:
8 - encoding support for MacOSX and other non-iconv platforms
9 - add a "charset" encoding registry
10 - improve error handling
11 - improve buffer size handling
12
13 NGLogger:
14
15 - fix format bugs
16
17 - fix performance
18   - running two format parsers and varargs processors is unnecessary
19     and far too expensive
20   - running seven methods calls just in logWithFormat:arguments: is expensive
21
22   - analysis: (for a simple logWithFormat:)
23     - NSObject logWithFormat:arguments:
24       - one format parser
25       - one varargs run
26       - 7 method calls
27     - NSObject logger
28       - caches in static variable, no method call after warm up
29     - NGLogger isLogInfoEnabled
30       - simple comparison (use macro or access public ivars?)
31     - NSObject loggingPrefix
32       - one autorelease string
33       - one format parser
34       - 2 method calls
35     - NGLogger logWithFormat:arguments:
36       - since we already know that logging is enabled, we do not need to check
37         again => forceLogWithPrefix:string: or -logLevel:message:
38       - one format parser
39       - one varargs run
40       - 4 method calls
41     - NGLogger logLevel:message:
42       - creates/releases a log event object
43       - calls appender
44       - 4 method calls
45     - NGLogConsoleAppender
46       - (incorrectly) calls NSLog => one varargs parser
47       - 1 method call
48     - NGLogAppender formattedEvent:
49       - 8 method calls
50       - creates an autorelease string
51     - NGLogAppender localizedNameOfLogLevel:
52       - simple switch
53   - summary: limit NGLogger to the few applications which require it
54
55 - having -logWithFormat:arguments: on NSObject seems unnecessary, there is
56   no reason to override this method