Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-dev] Code inefficiency

Working with one quite big C++ workspace, I continue to dig out some causes of deadlocks, inefficiency, bad performance or sluggish execution of some operations. I was wondering, could it be reasonable to collect somewhere inefficient implementations caused by bad design in order to truck somehow their fixings? Maybe, to create special bug report for that? Or maybe I have to create a separate bug report for each case? Or in community there is already a standard way how to deal with such stuff?

Sorry, I cannot help but show one example. I try to get make target: MakeTargetManager.findTarget(...) . This is seems to me a typical simple task, but all of a sudden it leads to 40-call stack, like this one:

Thread [Worker-4] (Suspended) .. then follows hard work to resolve the path entries
   ..........
PathEntryManager.getResolvedPathEntries(ICProject, boolean, boolean) line: 532 PathEntryManager.getResolvedPathEntries(ICProject, boolean) line: 504 PathEntryManager.getResolvedPathEntries(ICProject) line: 491 PathEntryStoreChangedOperation.executeOperation() line: 39 PathEntryStoreChangedOperation(CModelOperation).execute() line: 342 PathEntryStoreChangedOperation(CModelOperation).run(IProgressMonitor) line: 607 PathEntryStoreChangedOperation(CModelOperation).runOperation(IProgressMonitor) line: 635 PathEntryManager.pathEntryStoreChanged(PathEntryStoreChangedEvent) line: 1291 PathEntryStoreProxy.notifyListeners(PathEntryStoreChangedEvent) line: 65 PathEntryStoreProxy.fireContentChangedEvent(IProject) line: 58 PathEntryStoreProxy.postProcessProviderChange(Object, Object) line: 133 PathEntryStoreProxy(AbstractCExtensionProxy).checkUpdateProvider(ICProjectDescription, boolean, boolean) line: 121 PathEntryStoreProxy(AbstractCExtensionProxy).providerRequested() line: 38 PathEntryStoreProxy.getRawPathEntries() line: 92 PathEntryManager.getRawPathEntries(ICProject) line: 620 PathEntryManager.getResolvedPathEntries(ICProject, boolean, boolean) line: 520 PathEntryManager.getResolvedPathEntries(ICProject, boolean) line: 504 PathEntryManager.getResolvedPathEntries(ICProject) line: 491 PathEntryManager.getResolveInfo(ICProject, boolean) line: 418 PathEntryConfigurationDataProvider.createData(ICConfigurationDescription, boolean) line: 295 PathEntryConfigurationDataProvider.createData(ICConfigurationDescription, CConfigurationData, boolean, boolean) line: 266 PathEntryConfigurationDataProvider.loadConfiguration(ICConfigurationDescription, IProgressMonitor) line: 353 CProjectDescriptionManager.loadData(ICConfigurationDescription, IProgressMonitor) line: 1629 CConfigurationDescriptionCache.loadData(CSettingEntryFactory) line: 95 CProjectDescription.loadDatas() line: 194 CProjectDescriptionManager.loadProjectDescription(IProject) line: 1032 CProjectDescriptionManager.getProjectDescription(IProject, int) line: 538 CProjectDescriptionManager.getProjectDescription(IProject, boolean, boolean) line: 514 CProjectDescriptionManager.getProjectDescription(IProject, boolean) line: 506 CConfigBasedDescriptorManager.findDescriptor(IProject, boolean) line: 295 CConfigBasedDescriptorManager.getDescriptor(IProject, boolean) line: 205 CCorePlugin.getCProjectDescription(IProject, boolean) line: 682 ProjectTargets.translateCDTProjectToDocument() line: 304 ProjectTargets.<init>(MakeTargetManager, IProject) line: 78 MakeTargetManager.readTargets(IProject) line: 273 MakeTargetManager.findTarget(IContainer, String) line: 132 ............... Worker.run() line: 55


Back to the top