Легко определить свою собственную функцию
rr1 <- function(x) diff(x) / x[-length(x)]
rr1(x)
#[1] 0.02000000 0.01960784 0.01923077 0.01886792 0.01851852
Или с помощью классического цикла for
rr2 <- function(x) {
r <- numeric(length(x) - 1)
for (i in 1:(length(x) - 1)) r[i] <- (x[i + 1] - x[i]) / x[i]
r
}
rr2(x)
#[1] 0.02000000 0.01960784 0.01923077 0.01886792 0.01851852
И microbenchmark
сравнения обоих методов для большего вектора [ 115] с 10^4
записями
x <- seq(1, 1000, length.out = 10^4)
library(microbenchmark)
res <- microbenchmark(
rr1 = rr1(x),
rr2 = rr2(x))
#Unit: microseconds
# expr min lq mean median uq max neval cld
# rr1 157.596 190.554 518.0451 472.6565 501.5825 9565.411 100 a
# rr2 2057.669 2098.655 2397.8759 2121.2795 2227.8395 10124.874 100 b
A missing dependency? Have you checked with Dependency Walker that all referenced libraries are found?
If you attach a debugger during the LoadLibrary call, it may spew error info to debug output. In addition to the other suggestions here, if the manifest has an error in it this issue will occur.
I'm pretty sure its a dependency issue for you though. Try the ProcMon thing, and also try running on Vista to see if that solves the problem. You can get a test VPC image here.
You might try testing while ProcMon is running and see if any errors are visible in it while file monitoring is enabled.
Однажды я попал в тот же кошмар. Невозможно было ничего диагностировать, я только что обнаружил, что сброс пути порядка следования списка поиска dll (ключевое слово здесь, вероятно, «список», а не «порядок») устранил проблему.
SetDllDirectory (NULL);
Объяснение заключается в том, что сторонняя DLL в середине, вероятно, возилась с ней, не восстанавливая ее исходное состояние. Это могло объяснить, почему работало только ваше тестовое приложение.
Кроме того, Обходчик зависимостей может быть запущен с использованием параметра профиля. В этом случае exe должен быть загружен в обходчик зависимостей. После этого меню Можно использовать "Профиль".
После этого запускается приложение и заполняется дерево dll. Это также покажет, если отсутствует задержка загрузки dll и другие вещи.
Если вы не найдете ответа, проверив зависимости, я бы посоветовал сосредоточиться на возможных проблемах, связанных с архитектурой.
Вы упомянули, что используете автономную тестовую среду, но когда вы пробуете ее в обычной среде, она не работает. Можно ли настроить бизнес-функцию на сервере?
Прошло много времени с тех пор, как я последний раз работал с JDE. Я помню, как однажды я написал BSFN на C для вызова нескольких UBE в своего рода синхронизацию, и он отлично работал на моей локальной машине и не работал, когда я тестировал на сервере. Было что-то в том, что сервер не мог найти DLL (хотя я указывал путь) и некоторые требуемые настройки. Кроме того, в моем случае была критическая разница: на моей машине