Bug 578933 - avoid repeated Thread.setPriority
setPriority takes ~500ns on windows
Change-Id: I02ea35a7a8644ea9c8bfd2addb0a0c63340eb350
Signed-off-by: Joerg Kubitz <jkubitz-eclipse@gmx.de>
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.runtime/+/191136
Tested-by: Platform Bot <platform-bot@eclipse.org>
diff --git a/bundles/org.eclipse.core.jobs/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.jobs/META-INF/MANIFEST.MF
index c17d1be..63fd415 100644
--- a/bundles/org.eclipse.core.jobs/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.core.jobs/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.core.jobs; singleton:=true
-Bundle-Version: 3.12.100.qualifier
+Bundle-Version: 3.12.200.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.core.internal.jobs;x-internal:=true,
diff --git a/bundles/org.eclipse.core.jobs/pom.xml b/bundles/org.eclipse.core.jobs/pom.xml
index 443b0d6..d8119be 100644
--- a/bundles/org.eclipse.core.jobs/pom.xml
+++ b/bundles/org.eclipse.core.jobs/pom.xml
@@ -20,7 +20,7 @@
</parent>
<groupId>org.eclipse.core</groupId>
<artifactId>org.eclipse.core.jobs</artifactId>
- <version>3.12.100-SNAPSHOT</version>
+ <version>3.12.200-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<properties>
<code.ignoredWarnings>-warn:-deprecation,raw,unchecked</code.ignoredWarnings>
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Worker.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Worker.java
index 0911648..3a73d1c 100644
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Worker.java
+++ b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Worker.java
@@ -53,7 +53,7 @@
@Override
public void run() {
- setPriority(Thread.NORM_PRIORITY);
+ setNormPriority();
try {
while ((currentJob = pool.startJob(this)) != null) {
IStatus result = Status.OK_STATUS;
@@ -84,7 +84,7 @@
currentJob = null;
setName(generalName);
// reset thread priority in case job changed it
- setPriority(Thread.NORM_PRIORITY);
+ setNormPriority();
}
}
} catch (Throwable t) {
@@ -95,6 +95,13 @@
}
}
+ private void setNormPriority() {
+ if (getPriority() != Thread.NORM_PRIORITY) {
+ // Setting priority on some platforms may cause high overhead
+ setPriority(Thread.NORM_PRIORITY);
+ }
+ }
+
private String getJobName() {
String name = currentJob.getName();
if (name == null || name.trim().isEmpty()) {