Created
March 3, 2021 16:28
-
-
Save pixelomer/4030283737335afdef2802f9e962f785 to your computer and use it in GitHub Desktop.
Small Objective-C program for finding the longest built-in method name
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import <Foundation/Foundation.h> | |
#import <objc/runtime.h> | |
static void LoadAllFrameworks(NSString *root) { | |
NSFileManager *defaultManager = [NSFileManager defaultManager]; | |
NSDirectoryEnumerator *enumerator = [defaultManager | |
enumeratorAtURL:[NSURL fileURLWithPath:root] | |
includingPropertiesForKeys:nil | |
options:NSDirectoryEnumerationSkipsSubdirectoryDescendants | |
errorHandler:nil | |
]; | |
NSURL *bundleURL; | |
NSArray *blacklist = @[ | |
@"ActionKit.framework", | |
@"UIKit.framework" | |
]; | |
while ((bundleURL = [enumerator nextObject])) { | |
NSString *lastComponent = [bundleURL lastPathComponent]; | |
if ([blacklist containsObject:lastComponent] || [lastComponent hasSuffix:@"MacHelper.framework"]) { | |
continue; | |
} | |
NSLog(@"==> Loading \"%@\"...", [bundleURL path]); | |
NSBundle *bundle = [NSBundle bundleWithURL:bundleURL]; | |
@try { | |
[bundle load]; | |
} | |
@catch (NSException *exception) {} | |
} | |
} | |
int main(int argc, char **argv) { | |
LoadAllFrameworks(@"/System/Library/Frameworks"); | |
LoadAllFrameworks(@"/System/Library/PrivateFrameworks"); | |
unsigned int classCount; | |
Class *allClasses = objc_copyClassList(&classCount); | |
Class classForLongestMethodName; | |
const char *longestMethodName = ""; | |
for (unsigned int i=0; i<classCount; i++) { | |
unsigned int methodCount; | |
Method *allMethods = class_copyMethodList(allClasses[i], &methodCount); | |
for (unsigned int j=0; j<methodCount; j++) { | |
SEL methodSelector = method_getName(allMethods[j]); | |
const char *methodName = sel_getName(methodSelector); | |
if (strlen(methodName) > strlen(longestMethodName)) { | |
longestMethodName = methodName; | |
classForLongestMethodName = allClasses[i]; | |
} | |
} | |
free(allMethods); | |
} | |
free(allClasses); | |
printf("Longest method: -[%s %s]\n", class_getName(classForLongestMethodName), longestMethodName); | |
NSBundle *bundle = [NSBundle bundleForClass:classForLongestMethodName]; | |
printf("Source: %s\n", [[bundle description] UTF8String]); | |
return 0; | |
} |
@pixelomer Yeesh, why is this a thing, and imagine it in a program! (We always knew Objective-C was wordy)
On macOS 14.6, this program outputs the following:
Longest method: -[deoc_ultra predictionFromCurr_charge_start_secs_bin:drain_depth_mean_at_charge_start_secs_curr_static_bin:drain_depth_count_at_charge_start_secs_curr_static_bin:drain_depth_var_at_charge_start_secs_curr_static_bin:drain_depth_p_0_00_at_charge_start_secs_curr_static_bin:drain_depth_p_0_10_at_charge_start_secs_curr_static_bin:drain_depth_p_0_25_at_charge_start_secs_curr_static_bin:drain_depth_p_0_50_at_charge_start_secs_curr_static_bin:drain_depth_p_0_75_at_charge_start_secs_curr_static_bin:drain_depth_p_0_90_at_charge_start_secs_curr_static_bin:drain_depth_p_1_00_at_charge_start_secs_curr_static_bin:drain_depth_mean_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_count_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_var_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_p_0_00_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_p_0_10_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_p_0_25_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_p_0_50_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_p_0_75_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_p_0_90_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_p_1_00_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_mean_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_count_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_var_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_p_0_00_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_p_0_10_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_p_0_25_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_p_0_50_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_p_0_75_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_p_0_90_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_p_1_00_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_mean_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_count_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_var_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_p_0_00_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_p_0_10_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_p_0_25_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_p_0_50_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_p_0_75_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_p_0_90_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_p_1_00_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_mean_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_count_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_var_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_p_0_00_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_p_0_10_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_p_0_25_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_p_0_50_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_p_0_75_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_p_0_90_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_p_1_00_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_mean_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_count_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_var_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_p_0_00_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_p_0_10_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_p_0_25_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_p_0_50_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_p_0_75_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_p_0_90_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_p_1_00_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_mean_at_charge_start_secs_curr_static_bin:charge_duration_count_at_charge_start_secs_curr_static_bin:charge_duration_var_at_charge_start_secs_curr_static_bin:charge_duration_p_0_00_at_charge_start_secs_curr_static_bin:charge_duration_p_0_10_at_charge_start_secs_curr_static_bin:charge_duration_p_0_25_at_charge_start_secs_curr_static_bin:charge_duration_p_0_50_at_charge_start_secs_curr_static_bin:charge_duration_p_0_75_at_charge_start_secs_curr_static_bin:charge_duration_p_0_90_at_charge_start_secs_curr_static_bin:charge_duration_p_1_00_at_charge_start_secs_curr_static_bin:charge_duration_mean_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_count_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_var_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_mean_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_count_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_var_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_mean_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_count_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_var_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_mean_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_count_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_var_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_mean_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_count_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_var_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_mean_at_charge_start_secs_curr_static_bin:drain_duration_count_at_charge_start_secs_curr_static_bin:drain_duration_var_at_charge_start_secs_curr_static_bin:drain_duration_p_0_00_at_charge_start_secs_curr_static_bin:drain_duration_p_0_10_at_charge_start_secs_curr_static_bin:drain_duration_p_0_25_at_charge_start_secs_curr_static_bin:drain_duration_p_0_50_at_charge_start_secs_curr_static_bin:drain_duration_p_0_75_at_charge_start_secs_curr_static_bin:drain_duration_p_0_90_at_charge_start_secs_curr_static_bin:drain_duration_p_1_00_at_charge_start_secs_curr_static_bin:drain_duration_mean_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_count_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_var_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_mean_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_count_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_var_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_mean_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_count_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_var_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_mean_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_count_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_var_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_mean_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_count_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_var_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_12:curr_charge_start_soc_bin:drain_depth_mean_at_charge_start_soc_curr_static_bin:drain_depth_count_at_charge_start_soc_curr_static_bin:drain_depth_var_at_charge_start_soc_curr_static_bin:drain_depth_p_0_00_at_charge_start_soc_curr_static_bin:drain_depth_p_0_10_at_charge_start_soc_curr_static_bin:drain_depth_p_0_25_at_charge_start_soc_curr_static_bin:drain_depth_p_0_50_at_charge_start_soc_curr_static_bin:drain_depth_p_0_75_at_charge_start_soc_curr_static_bin:drain_depth_p_0_90_at_charge_start_soc_curr_static_bin:drain_depth_p_1_00_at_charge_start_soc_curr_static_bin:drain_depth_mean_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_count_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_var_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_p_0_00_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_p_0_10_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_p_0_25_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_p_0_50_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_p_0_75_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_p_0_90_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_p_1_00_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_mean_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_count_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_var_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_p_0_00_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_p_0_10_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_p_0_25_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_p_0_50_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_p_0_75_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_p_0_90_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_p_1_00_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_mean_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_count_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_var_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_p_0_00_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_p_0_10_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_p_0_25_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_p_0_50_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_p_0_75_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_p_0_90_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_p_1_00_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_mean_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_count_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_var_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_p_0_00_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_p_0_10_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_p_0_25_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_p_0_50_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_p_0_75_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_p_0_90_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_p_1_00_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_mean_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_count_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_var_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_p_0_00_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_p_0_10_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_p_0_25_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_p_0_50_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_p_0_75_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_p_0_90_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_p_1_00_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_mean_at_charge_start_soc_curr_static_bin:charge_duration_count_at_charge_start_soc_curr_static_bin:charge_duration_var_at_charge_start_soc_curr_static_bin:charge_duration_p_0_00_at_charge_start_soc_curr_static_bin:charge_duration_p_0_10_at_charge_start_soc_curr_static_bin:charge_duration_p_0_25_at_charge_start_soc_curr_static_bin:charge_duration_p_0_50_at_charge_start_soc_curr_static_bin:charge_duration_p_0_75_at_charge_start_soc_curr_static_bin:charge_duration_p_0_90_at_charge_start_soc_curr_static_bin:charge_duration_p_1_00_at_charge_start_soc_curr_static_bin:charge_duration_mean_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_count_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_var_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_mean_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_count_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_var_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_mean_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_count_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_var_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_mean_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_count_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_var_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_mean_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_count_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_var_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_mean_at_charge_start_soc_curr_static_bin:drain_duration_count_at_charge_start_soc_curr_static_bin:drain_duration_var_at_charge_start_soc_curr_static_bin:drain_duration_p_0_00_at_charge_start_soc_curr_static_bin:drain_duration_p_0_10_at_charge_start_soc_curr_static_bin:drain_duration_p_0_25_at_charge_start_soc_curr_static_bin:drain_duration_p_0_50_at_charge_start_soc_curr_static_bin:drain_duration_p_0_75_at_charge_start_soc_curr_static_bin:drain_duration_p_0_90_at_charge_start_soc_curr_static_bin:drain_duration_p_1_00_at_charge_start_soc_curr_static_bin:drain_duration_mean_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_count_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_var_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_mean_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_count_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_var_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_mean_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_count_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_var_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_mean_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_count_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_var_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_mean_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_count_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_var_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_12:prev_1_drain_depth:prev_1_charge_duration:prev_1_drain_duration:prev_2_drain_depth:prev_2_charge_duration:prev_2_drain_duration:prev_3_drain_depth:prev_3_charge_duration:prev_3_drain_duration:n_drain_above_50_30days:n_drain_below_50_30days:n_drain_above_60_30days:n_drain_below_60_30days:n_drain_above_70_30days:n_drain_below_70_30days:n_drain_above_80_30days:n_drain_below_80_30days:n_drain_above_90_30days:n_drain_below_90_30days:n_drain_above_100_30days:n_drain_below_100_30days:n_drain_above_50_15days:n_drain_below_50_15days:n_drain_above_60_15days:n_drain_below_60_15days:n_drain_above_70_15days:n_drain_below_70_15days:n_drain_above_80_15days:n_drain_below_80_15days:n_drain_above_90_15days:n_drain_below_90_15days:n_drain_above_100_15days:n_drain_below_100_15days:n_drain_above_50_7days:n_drain_below_50_7days:n_drain_above_60_7days:n_drain_below_60_7days:n_drain_above_70_7days:n_drain_below_70_7days:n_drain_above_80_7days:n_drain_below_80_7days:n_drain_above_90_7days:n_drain_below_90_7days:n_drain_above_100_7days:n_drain_below_100_7days:error:]
Source: NSBundle </System/Library/PrivateFrameworks/PowerUI.framework> (loaded)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
On macOS 11.2.1 (20D74), this program outputs the following:
Longest method: -[FCPersonalizationScoringConfig initWithArticleLengthAggregateWeight:articleReadPenalty:audioMultiplierForFreeUsers:audioMultiplierForTrialUsers:audioMultiplierForPaidUsers:autofavoritedVoteCoefficient:baselineRatePrior:bundleFreeMultiplierForFreeUsers:bundleFreeMultiplierForTrialUsers:bundleFreeMultiplierForPaidUsers:bundlePaidMultiplierForFreeUsers:bundlePaidMultiplierForTrialUsers:bundlePaidMultiplierForPaidUsers:channelTopicDiversificationInitialPenalty:channelTopicDiversificationPenalty:channelTopicDiversificationPenaltyHalfLife:conversionCoefficientForFreeUsers:conversionCoefficientForTrialUsers:conversionCoefficientForPaidUsers:conversionCohort:ctrWithOneAutofavorited:ctrWithOneSubscribed:ctrWithSubscribedChannel:ctrWithThreeAutofavorited:ctrWithThreeSubscribed:ctrWithTwoAutofavorited:ctrWithTwoSubscribed:ctrWithZeroAutofavorited:ctrWithZeroSubscribed:decayFactor:democratizationFactor:diversificationInitialPenalty:diversificationPenalty:diversificationPenaltyHalfLife:featuredMultiplierForFreeUsers:featuredMultiplierForTrialUsers:featuredMultiplierForPaidUsers:evergreenMultiplierForFreeUsers:evergreenMultiplierForTrialUsers:evergreenMultiplierForPaidUsers:firstPassHalfLifeCoefficient:firstPassEvergreenHalfLifeCoefficient:firstPassDiversificationPenalty:firstPassArticleFilter:globalScoreCoefficientFree:globalScoreCoefficientPaid:globalScoreCoefficientHalfLife:globalScoreCoefficientInitialMultiplier:headlineSeenPenalty:halfLifeCoefficient:evergreenHalfLifeCoefficient:mutedVoteCoefficient:personalizationCoefficient:publisherAggregateWeight:sparseTagsPenalty:subscribedChannelScoreCoefficient:subscribedTopicsScoreCoefficient:userCohort:] Source: NSBundle </System/Library/PrivateFrameworks/NewsCore.framework> (loaded)