A non-transitory computer readable medium containing instructions that when executed by at least one processor, cause the at least one processor to perform operations for self-monitoring software usage to optimize performance, the operations comprising:
- maintaining a table;
- presenting to an entity a plurality of tools for manipulating data in the table;
- monitoring tool usage by the entity to determine at least one tool historically used by the entity;
- comparing the at least one tool historically used by the entity with information relating to the plurality of tools to thereby identify at least one alternative tool in the plurality of tools whose substituted usage is configured to provide improved performance over the at least one historically used tool, wherein the comparing includes performing semantic analysis of the table to identify a table context and wherein the at least one alternative tool is identified at least in part on the table context;
- and
- presenting to the entity during a table use session a recommendation to use the at least one alternative tool.