我最近发现存在标准的最快类型,主要是int_fast32_t和int_fast64_t.
我总是被告知,对于主流架构的正常使用,应该更好地使用经典的int和long,它应该总是适合处理器的默认读取容量,因此避免无用的数字转换.
在C99标准中,它在§7.18.1.3p2中说:
"typedef名称int_fastN_t指定宽度至少为N的最快有符号整数类型.typedef名称uint_fastN_t指定宽度至少为N的最快无符号整数类型."
在§7.18.1.3p1中也引用了它:
"对于所有目的,指定的类型不能保证最快;如果实现没有明确的理由选择一种类型而不是另一种类型,它将简单地选择一些满足签名和宽度要求的整数类型."
我不清楚最快的真正含义.我不明白何时应该使用这种类型,何时不应该使用.
我用Google搜索上这一点了,发现了一些开放 源码 项目已经改变了他们的一些功能,但不是所有的人.他们并没有真正解释为什么他们改变了代码的一部分,而只改变了代码的一部分.
当int_fastXX_t 真的比经典的更快时,你知道具体的案例/用法是什么吗?
我有一个带有白色背景的Android滚动视图.褪色边缘是白色半透明渐变.我想改变它是黑色而不是白色.我在同一个项目中有一个ListView,白色背景默认有黑色渐变边缘,但我找不到设置的位置(如果有的话).
我一直在c/c ++应用程序中使用GSSAPI.显然我不得不谷歌和研究很多.我发现的最有趣的文档之一是在Sun的旧网站上.在Oracle接管Sun之后,旧的网站已经消失,但不知何故,这些信息仍然存在. http://docs.oracle.com/cd/E19253-01/816-4863/index.html 令人震惊的是,我在Oracle的文档中找不到上述URL的任何链接.内容还包括几个PDF文件,我幸运地保存在我的笔记本电脑上.
上面的URL也提供了使用SASL和c/c ++的出色指南.
内容引用了一些包含示例源代码的tar文件.根据当前网站内容,该文件应该可以在以下网址获得:http: //www.sun.com/download/products.xml?id = 41912db5 但遗憾的是我现在无法在网站上找到它们.
内容是ac/c ++程序员在GSSAPI/Kerberos/PAM/SASL上重新开始的一个很好的起点
看看Oracle现在的网站,我坚信内容目前"意外"落后,很快就会消失.
现在,这是我访问stackoverflow的奇妙黑客的问题:
我认为这些内容真的非常宝贵,而且我无法想到任何其他网络资源,以获得有关使用GSSAPI和C/C++的非常明确的信息.如果您可以对此做些什么,请立即执行,因为我认为上述网址很快就会消失.
我真诚地感谢你们,我向你们许多人也会感谢你们.
编辑:在Oracle网站上有点狩猎,我发现了其中一个PDF的链接,但是给了一个新名称: Oracle Solaris Security for Developers 如果你开始使用GSSAPI/SASL,那么肯定是一个参考的宝石C++
是否有一个版本的memset()设置一个大于1字节(char)的值?例如,假设我们有一个memset32()函数,所以使用它我们可以执行以下操作:
int32_t array[10];
memset32(array, 0xDEADBEEF, sizeof(array));
Run Code Online (Sandbox Code Playgroud)
这将在数组的所有元素中设置值0xDEADBEEF.目前在我看来,这只能通过循环来完成.
具体来说,我对64位版本的memset()感兴趣.知道这样的事吗?
我刚刚阅读了" 容量计划的艺术"(BTW,我喜欢它),其中作者解释了衡量服务,找出最高限度,预测需求,确保轻松部署等方面的重要性等.但通过这本书,他解释了他在Flickr的经历,他不得不面对同样的产品.
很多我们,我们在我们面向其他公司的中小型项目规模的公司工作.我们必须了解他们的业务,他们的需求,计划架构,模型等等.
然后,客户说"我需要支持1000个用户".那么,每秒有多少请求是用户?他们的会议有多长?他们传输了多少数据?他们执行哪些操作?他们有多久了?
有时可以知道这些数字(监控他们现有的应用程序或因为他们已经完成了测量),有时候这是不可能的(因为他们没有当前的网站,或者只是可能知道).
你如何猜测服务器,带宽,存储等的数量......你使用哪些参考数据?
问候.
numpy.float128在内部映射到什么精度?是__float128还是长双?(或完全不同的东西!?)
如果有人知道,可能会有一个问题:在C中将__float128强制转换为(16字节)长的双精度是否安全?(这是为了与长双打的C lib接口).
编辑:响应评论,该平台是'Linux-3.0.0-14-generic-x86_64-with-Ubuntu-11.10-oneiric'.现在,如果numpy.float128具有依赖于平台的不同精度,那对我来说也是有用的知识!
需要明确的是,这是我感兴趣的精度,而不是元素的大小.
您使用什么软件来管理Scrum软件开发?
到目前为止,我们已经尝试过Tackle和VersionOne(都是免费的)并且它们很好,除了很难跟踪正在进行的工作.例如,如果我有一项任务我估计需要8个小时才能完成,我已经完成了4个小时的工作,剩下4个小时,任务总是报告为剩余8个小时,直到它标记为完成,此时它降到零.
我想使用一种工具,让我能够在每周末的团队WIP中准确地完成工作,看看这项工作对截止日期和完成的任务产生了多大的影响.
感谢您的输入!
我有兴趣为我的Ruby on Rails应用程序构建一个强大的成就系统.
成就可以以无数种方式发生.通常情况下,我们会有一些标准可能发生在几个模型上,一些是必需的,一些是可选的(混合和匹配)触发成就.
我会说这类似于这里的成就系统或Foursquare徽章.理想情况下,如果有一个现代工具可以帮助抽象出一些DSL中的大量工作,那将是非常棒的.
我很想知道其他人如何使用Ruby或Ruby on Rails解决这个问题.从头开始构建这听起来不合理,因为我确信它已经反复多次解决.
Ruby 1.9应该具有本机线程,如果某些线程进入本机代码(如GUI工具包主循环或某些Ruby lib的C实现),GIL应该会解除.
但是,如果我开始关注在主线程中显示GUI的简单代码示例并在单独的线程中执行一些基本的数学运算 - GUI将严重挂起,尝试调整窗口大小以便自己查看.我已经检查过不同的GUI工具包,Qt(qtbindings gem) - 它的行为完全相同.在Windows 7和OSX 10.7上使用Ruby 1.9.3-p0进行了测试
require 'tk'
require 'thread'
Thread.new { loop { a = 1 } }
TkRoot.new.mainloop()
Run Code Online (Sandbox Code Playgroud)
Python中的相同代码工作正常,没有任何GUI挂起:
from Tkinter import *
from threading import *
class WorkThread( Thread ) :
def run( self ) :
while True :
a = 1
WorkThread().start()
Tk().mainloop()
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
UPDATE
看来在Ubuntu linux上没有这样的问题,所以我的问题主要是关于Windows和OSX.
UPDATE
有人指出OSX上没有这样的问题.所以我汇编了一个分步和重现问题的分步指南:
test.rb
使用我的示例中的代码创建一个文件并运行它.尝试调整窗口大小 - 你会看到可怕的滞后.从代码中删除线程,启动并尝试调整窗口大小 - 滞后消失.我录制了这个测试的视频.Ruby编译命令: …
在阅读了主题之后,来自众多来源的绝大多数证据表明,在英特尔上使用标准C或C++转换从浮点转换为整数是非常缓慢的.为了满足ANSI/ISO规范,Intel CPU需要执行大量指令,包括切换FPU硬件的舍入模式所需的指令.
各种文档中描述了许多变通方法,但最干净,最便携的似乎是添加到C99和C++ 0x标准的lrint()调用.许多文档都说编译器应该在启用优化时内联扩展这些函数,从而导致代码比传统的强制转换或函数调用更快.
我甚至发现了对gcc特征跟踪包的引用,将这个内联扩展添加到gcc优化器中,但在我自己的性能测试中,我无法让它工作.我所有的尝试都表明lrint性能要比简单的C或C++样式转换慢得多.检查编译器的程序集输出,并反汇编编译对象始终显示对外部lrint()或lrintf()函数的显式调用.
我一直在使用的gcc版本是4.4.3和4.6.1,我在32位和64位x86目标上尝试了许多标志组合,包括明确启用SSE的选项.
如何让gcc内联扩展lrint,并给我快速转换?