我想知道Java的效率以及Java虚拟机和Android的优缺点.效率是内存使用率低,处理器使用率低和执行速度快.
移动设备比PC更简单,然后应用程序需要更高效.服务器接收许多连接,它们需要非常高效.许多移动设备使用Android和Java应用程序,许多服务器使用PHP.
Java和解释语言(如Java Script,Python和PHP)能否比C和C++更高效?
JIT(及时)优势:
Java缺点:
我正在用POSIX API编写一个C程序并使用Linux.我在朋友的Mac OSX PC上编译并运行它并且出现了一个小错误,但我没有使用Linux特有的功能.
我将使用Linux添加到API的一些特定功能.我还将为Mac Os X和FreeBSD使用特定的POSIX扩展.
我将使用条件编译来选择代码.如果OS不是那些,我将使用通用POSIX代码.
我不拥有Darwin/Mac OSX和FreeBSD,Linux是我在PC上唯一拥有的操作系统.我无法下载和安装FreeBSD,因为它超过500 MB.
我想知道一种方法来测试程序是否会在其他POSIX系统上按预期编译和运行.
我想知道是否有POSIX模拟器和编译器来进行测试.
测试很简单,它们不使用GUI和驱动程序,它们只是命令行.
我需要做3个测试:FreeBSD,Mac OSX/Darwin和Generic POSIX,但我没有这些工具.
编辑
有没有GUI的FreeBSD和Darwin的最小版本,但有GCC/G ++和ssh/scp?达尔文是免费的,不是吗?
我的电脑很旧,但我想我可以将它们安装在虚拟机中,创建虚拟网络并使用ssh/scp来传输和测试程序.
我想创建一个像Space Invaders这样的简单游戏.我知道我可以使用Android NDK,但我必须移植我使用的库.我不能使用第三方专有库.
我将使用OpenGL,但OpenGL API在Android上似乎有所不同.我必须使用jpeg和png纹理,并编写文本.我可以为Android编译libjpeg,libpng和freetype吗?
我不能具体的游戏引擎(C++)和渲染例程(C++和OpenGL)的实现,因为这是复杂的部分.
我准备为每个平台实现组件.窗口系统和用户输入没有问题,因为我将为每个系统使用特定的实现,这对我来说很简单.
我在PC上使用SDL及其音频扩展,但它易于使用.我可以使用Android的特定音频库.
谢谢
有谁知道编译器是否有优化源代码的列表?我更喜欢GCC作为例子.
我想知道程序员应该如何处理代码以获得良好的优化并帮助编译器优化它.程序员的一些优化可能会避免编译器做更好的优化.
例子:
replace
for (int i = 0; i < n - 1; i++ )
by
int n2 = n - 1;
for (int i = 0; i < n2; i++ )
for (int i = 0; i < n/2; i++ )
by
int n2 = n/2;
for (int i = 0; i < n2; i++ )
for (int i = 0; i < obj.calc_value(); i++ ) //calc_value() will return the same result with obj remaining unchanged.
by
int …Run Code Online (Sandbox Code Playgroud) 我想将C++程序编译为中间代码.然后,我想用当前处理器的所有资源编译中间代码.
第一步是使用优化(-O2)编译C++程序,运行链接器并执行大部分编译过程.此步骤必须独立于操作系统和体系结构.
第二步是使用处理器的优化和特殊指令(-march = native),为当前计算机的操作系统和处理器编译第一步的结果,而不使用原始源代码.第二步应该是快速且软件要求最低.
我可以做吗?怎么做?
编辑:
我想这样做,因为我想分发一个独立于平台的程序,它可以使用处理器的所有资源,而不需要原始的源代码,而不是为每个平台和操作系统分发编译.如果第二步快速而简单,那将是件好事.
相同架构的处理器可能具有不同的功能.X86处理器可能有SSE1,SSE2或其他,它们可以是32位或64位.如果我为通用X86编译,它将缺乏SSE优化.多年以后,处理器将具有新功能,并且需要针对新处理器编译程序.
c++ compiler-construction optimization cross-platform intermediate-language
我需要用加密技术保护一系列字节,我需要稍后恢复数据.我想使用密钥/密码来加密和解密数据.
我正在使用Java.如何使用Java中的密钥或密码加密和解密字符串?
谢谢.
编辑:方法不能慢.
我正在用winapi编程.如何在指定时间内等待消息?如果没有消息,我可以做另一项任务.我无法使用Sleep,因为窗口回调程序将被延迟.
while (true){
...//wait a message for 30 miliseconds
GetMessage(&message, hwnd, 0, 0) ) or PeekMessage(&message, hwnd, 0, 0, PM_REMOVE)
...
if ( no_message ){
call_a_function();
} else {
if (finish)
break;
TranslateMessage(&message);
DispatchMessage(&message);
...//set to wait 30 minus elapsed time
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用PostgreSQL 8.4,我想创建一个返回多行查询的函数.
下面的函数不能正常工作:
create function get_names(varchar) returns setof record AS $$
declare
tname alias for $1;
res setof record;
begin
select * into res from mytable where name = tname;
return res;
end;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
该类型record仅允许单行.
如何返回整个查询?我想使用函数作为查询模板.
我在文件中有一个类,AType.h它在AType.cpp中实现.
# include "PrivateType.h"
class AType{
private:
int a, b, c;
PrivateType varX;
public:
...
};
Run Code Online (Sandbox Code Playgroud)
我想在文件中使用类AType main.cpp,我需要包含AType.h,但我想避免包含PrivateType.h在main.cpp中.
我无法varX用malloc/new 创建.
main.cpp必须在编译时知道AType的大小.
目前的解决方案:(这很糟糕)
1 - 创建要打印的程序sizeof(AType).
2 - 更改标题:
# ifdef ATYPE_CPP
# include "PrivateType.h"
#endif
class AType{
private:
# ifdef ATYPE_CPP
int a, b, c;
PrivateType varX;
# else
char data[ the size that was printed ];
# endif
public:
...
};
Run Code Online (Sandbox Code Playgroud)
3 - 而AType.cpp将从以下开始:
# define ATYPE_CPP …Run Code Online (Sandbox Code Playgroud) 我想为Android创建一个游戏,我需要在SDK和NDK之间进行选择.手机硬件有限,我想避免减速,但Java速度慢,占用内存过多.
NDK应用程序比SDK应用程序更快,更高效吗?
Java使用垃圾收集器,所有对象都在堆上分配,我不能在另一个对象内部分配对象(没有指针),并且用作结构的简单类继承Object类.
我的NDK程序是否会转换为Java字节码?编译器会忽略我的删除调用,添加垃圾收集器,添加Object类并将所有对象传输到堆中吗?
c++ ×4
java ×3
android ×2
c ×2
performance ×2
android-ndk ×1
cryptography ×1
function ×1
header-files ×1
include ×1
jit ×1
linux ×1
loops ×1
optimization ×1
plpgsql ×1
porting ×1
posix ×1
postgresql ×1
security ×1
sql ×1
testing ×1
timer ×1
winapi ×1
window ×1
windows ×1