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()) {