This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
Sun ONE Studio 5.0 on Solaris 5.8 Description: ============ Common PVCS operations (like Refresh, Add, Create Project and etc.) are much slower and have much higher CPU utilization than similar operations running from vendor GUI tool. This is serious performance degradation if compared to Forte for Java 4.0.
It's true. This is since the profile was rewritten to use PCLI commands, which are written in Java. Therefore a second JVM is being started in which the commands are executed. This is very inefficient. The only solution is to execute the PCLI commands through internal execution in NetBeans. However this might not be trivial, since the commands may require some system-dependent setup before Java classes are launched.
I thought about "pcli run" command to use for this purpose. It would be ideal if we can execute "pcli run" once and then tell it individual commands to process. However this does not seem to be possible, it accepts only a script file. It does not read commands from standard input. Even when I passed /dev/fd/0 as a standard input, it didn't execute the commands untill EOF was reached. Thus the only option is to use either Developer's toolkit (which is native and would have to be compiled for every architecture) or hack the launch of pcli. In version 7.5 we could probably use vm.jar, but the setup is not trivial.
As this is likely to be quite hard to solve, I've created issue #42500 for optimizations, which can be done into the next release.
It looks like this problem can be fixed. One can create a script, that would process individual commands in a loop: while 1=1 { readline -vCMD run -ns $CMD } This loop can be started once and commands passed to it through an input stream. Then there would be just one JVM running pcli script and executing commands.
This is going to be implemented into promotion D. A special PCLI script with an executor created: RCS file: /cvs/vcsgeneric/profiles/pvcs/src/org/netbeans/modules/vcs/profiles/pvcs/commands/PCLICommand.java,v done Checking in PCLICommand.java; /cvs/vcsgeneric/profiles/pvcs/src/org/netbeans/modules/vcs/profiles/pvcs/commands/PCLICommand.java,v <-- PCLICommand.java initial revision: 1.1 done RCS file: /cvs/vcsgeneric/profiles/pvcs/src/org/netbeans/modules/vcs/profiles/pvcs/commands/PCLICommandExecutor.java,v done Checking in PCLICommandExecutor.java; /cvs/vcsgeneric/profiles/pvcs/src/org/netbeans/modules/vcs/profiles/pvcs/commands/PCLICommandExecutor.java,v <-- PCLICommandExecutor.java initial revision: 1.1 done
The dataRegex and errorRegex are set to the default used in ExecuteCommand so that the behavior is compatible with OS native commands: /cvs/vcsgeneric/profiles/pvcs/src/org/netbeans/modules/vcs/profiles/pvcs/commands/PCLICommand.java,v <-- PCLICommand.java new revision: 1.2; previous revision: 1.1
ABSPATH and QABSPATHS variables defined. They contain absolute paths of selected files. This is necessary for the new upcomming form of PCLI commands, where current working directory is not set: /cvs/vcscore/src/org/netbeans/modules/vcscore/cmdline/UserCommandSupport.java,v <-- UserCommandSupport.java new revision: 1.35; previous revision: 1.34
The commands implementing TextInput interface are used to pass the textual input: /cvs/vcscore/src/org/netbeans/modules/vcscore/cmdline/exec/ExternalCommand.java,v <-- ExternalCommand.java new revision: 1.32; previous revision: 1.31 /cvs/vcscore/src/org/netbeans/modules/vcscore/cmdline/ExecuteCommand.java,v <-- ExecuteCommand.java new revision: 1.77; previous revision: 1.76 PCLICommand implements the TextInput interface to handle the input. PCLICommandExecutor pass the input to the underlying script command: /cvs/vcsgeneric/profiles/pvcs/src/org/netbeans/modules/vcs/profiles/pvcs/commands/PCLICommand.java,v <-- PCLICommand.java new revision: 1.3; previous revision: 1.2 /cvs/vcsgeneric/profiles/pvcs/src/org/netbeans/modules/vcs/profiles/pvcs/commands/PCLICommandExecutor.java,v <-- PCLICommandExecutor.java new revision: 1.2; previous revision: 1.1
Echo command created so that it's not necessary to call echo command from the OS: RCS file: /cvs/vcsgeneric/src/org/netbeans/modules/vcs/profiles/commands/Echo.java,v /cvs/vcsgeneric/src/org/netbeans/modules/vcs/profiles/commands/Echo.java,v <-- Echo.java initial revision: 1.1
Fixed in trunk. The PVCS profile is reworked to use PCLICommand for execution of PCLI commands. This brings much better responsiveness of commands, the performance improvement seems to be really huge: /cvs/vcsgeneric/profiles/pvcs/src/org/netbeans/modules/vcs/profiles/pvcs/config/pvcs.xml,v <-- pvcs.xml new revision: 1.15; previous revision: 1.14 done Checking in pvcsLoc_XX.xml; /cvs/vcsgeneric/profiles/pvcs/src/org/netbeans/modules/vcs/profiles/pvcs/config/pvcsLoc_XX.xml,v <-- pvcsLoc_XX.xml new revision: 1.14; previous revision: 1.13
Folks from VCS QA, could you verify? I don't have PVCS installed and setup to verify that the PVCS operations are now fast enough. Thanks!
Our performance measurements confirmed that it got really improved. Verified in development build #200407151800 of NetBeans 4.0.