我听到一个传闻,Java消耗的能量比PHP少,并且想知道这是否以及如何实现.我目前在一家公司工作,我们的大多数应用程序都基于PHP.功耗对我们来说从来都不是问题,但我们正在开展更重要的项目.我们喜欢PHP用于网络开发,并且想知道这样的谣言是如何传播的,如果它是真的.
我听到的例子是Facebook正在切换到Java的原因(我似乎无法在谷歌上找到任何这些东西).
由于我的一位客户问我这个问题,我很乐意证明这是真的.
CLLocation.h中列出了以下内容,但根据我的经验,它们是欺骗性的名称 - 可能最初被认为有两个目的,1.测试返回位置的准确性,以及2.设置位置管理器的工作难度,具体是什么启用(gps(多少个卫星频道),wifi工作有多难,三角测量等.
extern const CLLocationAccuracy kCLLocationAccuracyBestForNavigation; // (raw value: -2)
extern const CLLocationAccuracy kCLLocationAccuracyBest; // (raw value: -1)
extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters; // (raw value: 10)
extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters; // (raw value: 100)
extern const CLLocationAccuracy kCLLocationAccuracyKilometer; // (raw value: 1000)
extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers; // (raw value: 3000)
Run Code Online (Sandbox Code Playgroud)
我很想看看CLLocation.m,但由于这种情况不太可能很快发生 - 任何人都有任何现场测试显示他们认为这些不同模式正在发生的事情.
即,kCLLocationAccuracyBest = 10卫星(频道/中继?),100%电源到wifi等.
我有点猜测这里的稻草 - 我认为这是苹果应该提供的信息类型 -
我真正想知道的是,与kCLLocationAccuracyThreeKilometers
电池电量相关的实际情况是gps开启了吗?1坐在后备箱?启用wifi?计时器上的wifi?谁知道?我知道我想
是否可以将Win + L热键重新分配给另一个可执行文件/快捷方式?
使用案例 - 我想在我的笔记本电脑锁定后立即关闭它.我知道一个可以锁定和关闭监视器的可执行文件,但我不想改变系统锁定的方式(通过显式或通过其他快捷方式运行程序).如果可以将Win + L分配给此可执行文件,那将是最好的.
我已经阅读了几本图像处理书籍和网站,但我仍然不确定图像处理中"能量"一词的真正定义.我找到了几个定义,但有时它们只是不匹配.所以要确定......
当我们在图像处理中说"能量"时,我们暗示什么?
artificial-intelligence energy image-processing definition computer-vision
一般认为,更快的代码将消耗更少的功率,因为您可以将CPU置于空闲状态更长的时间,但是当我们谈论能耗时,遵循一种可能性:
假设有一个指令序列在1ms内执行,在执行过程中平均电流消耗为40mA.你的Vdd是3.3V
所以消耗的总能量= V*I*t = 3.3*40*10 ^ -3*1*10 ^ -3焦耳= 13.2*10 ^ -6焦耳
在另一种情况下,有一个指令序列在2ms内执行,在执行过程中平均电流消耗为15mA..Vdd为3.3V
所以消耗的总能量= V*I*t = 3.3*15*10 ^ -3*2*10 ^ -3焦耳= 9.9*10 ^ -6焦耳
所以问题来了... 是否存在具有不同指令集的架构,用于执行具有不同当前消耗的相同任务?
如果有...那么是否有任何编译器考虑到这一点并生成一个节能的代码?
我正在寻找最新智能手机上所有组件及其电源排放的列表.
优选以mA为单位,因此可以很容易地将其与电池容量(通常以mAh表示)进行比较.
传感器的功能实际上可以通过SDK获得,也可以轻松找到AndroidFragmentation上的大多数设备.然而,我正在寻找的是其他硬件组件的可比数据,以考虑它们的效率.
额外奖励:对传感器更新频率更低的请求是否会降低传感器的能耗,因为它只返回一个值getPower()
?
我们正在使用Mac上的音频播放器项目,并注意到电源使用率非常高(约为google chrome执行相同工作负载的7倍).
我使用了xcode的能量分析工具,其中一个问题是我们有太多的CPU唤醒开销.
根据xcode:
每次CPU从空闲状态唤醒时,都会产生能量损失.如果唤醒很高,并且每次唤醒的CPU利用率很低,那么您应该考虑批处理工作.
我们已经将问题缩小到了一个usleep函数调用.
在我们的代码中,音频解码器是一个生产音频数据并将其插入消费者的生产者 - 音频播放器.我们的音频播放器基于OpenAL,它具有音频数据缓冲区.
因为音频播放器可能比生产者慢,所以我们总是在向音频播放器提供新的音频数据之前检查缓冲器的可用性.如果没有可用的缓冲区,我们会暂停一段时间再试一次.所以代码看起来像:
void playAudioBuffer(Data *data)
{
while(no buffer is available)
{
usleep()
}
process data.
}
Run Code Online (Sandbox Code Playgroud)
知道usleep是一个问题,我们做的第一件事就是删除usleep().(因为OpenAL似乎不提供回调或任何其他方式,轮询似乎是唯一的选择.)我们成功地将功耗降低了一半.
然后,昨天,我们尝试了
for(int i =0; i<attempts; ++i)
{
std::unique_lock<std::mutex> lk(m);
cv.wait_for(lk, 3, []{
available = checkBufferAvailable();
return available;
})
if (available)
{
process buf;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我们偶然尝试的一项实验.它对我们来说没有任何意义,因为逻辑上它执行相同的等待.并且条件变量的使用不正确,因为变量"available"只能由一个线程访问.但它实际上减少了90%的能耗,线程的CPU使用量下降了很多.现在我们比铬更好.但条件变量如何实现与以下代码不同?为什么它会节省我们的力量?
mutex lock;
while(condition is false)
{
mutex unlock;
usleep();
mutex lock;
}
...
mutex unlock
...
Run Code Online (Sandbox Code Playgroud)
(我们使用mac的活动监视器(能量编号)和cpu使用情况分析工具来测量能耗.)
我有一个(理论上)网络,有N个节点,每个节点都有自己的固定位置.每个节点每个周期发送一条消息,需要直接或通过其他节点到达根节点.
从节点A向节点B发送消息的能量成本是它们之间的距离,平方.
挑战在于如何以树形格式链接这些节点以产生最节能的网络.
例如,有两种可能的方式来链接这些节点,左边的节点更节能.
我正在研究遗传算法来解决这个问题,但我想知道是否有人有任何其他想法,或者知道任何相关的开源代码.
编辑:网络的另一个方面,我忘了提到,每个节点都是电池供电的.因此,如果我们通过同一节点路由太多消息,那么该节点的电池将耗尽,导致网络出现故障.网络的能效是通过在任何节点电池耗尽之前可以从每个节点成功传输到根节点的消息来衡量的.
编辑#2:对于问题原始文本中的遗漏,我很抱歉.不管怎么说,你之前的一些答案并不是我想要的,但我不熟悉MST算法,所以感谢你告诉我它们.
为了让事情更清楚,让我补充一点:
所有节点每个周期发送一个自己的消息,包括内部节点.内部节点还负责中继它们收到的任何消息.这增加了电池的压力,如果他们发送了他们自己的附加信息.目标是在任何节点电池耗尽之前最大化循环次数.
energy ×10
algorithm ×1
android ×1
c++ ×1
cllocation ×1
definition ×1
graph-theory ×1
ios ×1
java ×1
location ×1
locking ×1
monitor ×1
performance ×1
php ×1
profiling ×1
smartphone ×1
sse ×1
thread-sleep ×1
treenode ×1
windows ×1
x86 ×1
xcode7 ×1