使用标志(基于this post)
IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP
和
IMAGE_FILE_NET_RUN_FROM_SWAP
当可执行文件位于LAN路径或可移动设备中时,可以将可执行文件加载到内存中。
即使exe在本地光盘上,有没有办法实现相同的目标?
我知道没有什么性能提升,但要摆脱光盘"这是一个想法。 我没有在文档中找到这样的编译器选项。
答案 0 :(得分:6)
即使exe在本地光盘上,有没有办法实现相同的目标?
不,没有。没有这样的PE旗帜。人们想象的那将是毫无意义的。为什么要从磁盘上的一个位置复制到另一个位置,然后加载映像副本?
您可以通过IMAGE_FILE_NET_RUN_FROM_SWAP
和function dividedDifferences(X,Y,x)
ddMatrix = X'
ddMatrix(:,2) = Y'
for j=3:length(Y)+3
for i=1:length(Y)+2-j
ddMatrix(i,j) = (ddMatrix(i,j-1)-ddMatrix(i+1,j-1))/(ddMatrix(i,1)-ddMatrix(i+j-2,1))
end
end
disp(ddMatrix)
Px = 0
for j=2:length(Y)+1
prd = 1
for i=1:j-2
prd = prd * (x - ddMatrix(i,1))
end
Px = Px + ddMatrix(1,j)*prd
end
disp(Px)
endfunction
function lagrange(X,Y,x)
for i=1:length(Y)
l(i)=1
for j=1:length(Y)
if i~=j
l(i) = l(i)*(x-X(j))/(X(i)-X(j))
end
end
end
disp(l')
L=0
for i=1:length(Y)
L = L+Y(i)*l(i)
end
disp(L)
endfunction
//example instance
X = [0 1 5 8]
Y = [0 1 8 16.4]
x = 7
dividedDifferences(X,Y,x)
lagrange(X,Y,x)
来谈论绩效改进,但是您已经错误地解决了问题。使用这些标志时性能会更差。这是因为在映射可执行文件之前必须首先读取整个图像。如果没有这些PE标志,则可以映射图像并仅按需加载。此外,您在交换文件中占用的空间可能会产生负面影响。
您不会使用这些标志来提高性能,因为它们不会提高性能,但会使您的程序启动速度变慢。您使用这些标志来确保可靠性。将映像复制到本地交换文件后,在尝试按需加载部分可执行文件时,您不太可能遇到硬页面错误。