我现在很难过.我一直很高兴地使用NSDateFormatter没有任何问题,但今天我注意到我的一个应用程序在iOS 6.3的iPhone 6 plus设备上给了我疯狂的结果 - 而在其他设备/模拟器上似乎没问题.调查它有这个代码:
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[dateFormatter setDateFormat:@"HH"];
NSInteger hour= [[dateFormatter stringFromDate:datetime] integerValue];
Run Code Online (Sandbox Code Playgroud)
这导致(在设备上)到0-12小时的表示法,因为有一个超出我的原因,如果我在那时打印[dateFormatter stringFromDate:datetime]我得到"下午4点"!
我错过了什么?
我使用Inline :: C制作了一个模块,并且注意到在主机MacOS和来宾Linux VM上运行该模块之间存在一些意外的性能差异。研究它是由于默认的C编译器标志不同。在MacOS上,它们似乎是:
-fno-common -DPERL_DARWIN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -O3 -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\"
Run Code Online (Sandbox Code Playgroud)
与Centos 7相比:
-fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -O2 -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\"
Run Code Online (Sandbox Code Playgroud)
我的代码的主要区别是O3 vs O2,因此我研究了Inline文档并使用:
use Inline (C => Config => ccflags => '-O3');
Run Code Online (Sandbox Code Playgroud)
要明确指定-O3。好吧,结果是这样-O3 -O2应用的,因此指定ccflag不会覆盖默认值,它只会在默认值之前添加,最终不会产生任何效果。任何知道默认值的来源和/或如何覆盖默认值以指定所需的优化级别的想法。
我在一个应用程序中有这个单例代码,我不时更新.当我使用Apple参考代码时,我不得不更新一次或两次,因为clang抱怨并且Apple更新了它作为回应.今天我尝试用Xcode 4.6进行分析,我再次收到警告,尽管苹果公司在两年内没有更新.我真的无法理解他们怎么不能以静态分析器不会抱怨的方式编码单例.并且如果他们觉得他们的参考代码是正确的,那就不能改变静态分析器以适应他们的代码.但回到代码,我有这个类:
@implementation MySingleton
static MySingleton *sSharedSingleton = nil;
+ (MySingleton *)sharedSingleton
{
if (sSharedSingleton == nil)
{
sSharedSingleton = [[super allocWithZone:NULL] init];
}
return sSharedSingleton;
}
+ (id)allocWithZone:(NSZone *)zone
{
return [[self sharedSingleton] retain];
}
- (id)copyWithZone:(NSZone *)zone
{
return self;
}
- (id)retain
{
return self;
}
- (unsigned)retainCount
{
return NSUIntegerMax; //denotes an object that cannot be released
}
- (oneway void)release
{
//do nothing
}
- (id)autorelease
{
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
据我所知,这正是来自https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html的参考资料.
Clang抱怨带有警告的allocWithZone实现的返回行: …
抱歉这篇文章太长了,这里是 TLDR:对于 Google Cloud Engine AMD 驱动的虚拟机的每个实例,1vCPU 与其他实例相比在某种程度上受到了削弱。知道如何/为什么吗?
我对 Google 计算引擎提供的各种实例类型进行了性能/价值分析,发现对于我们的工作负载,AMD EPYC Milan 驱动的n2d类型提供了最佳的性能和价值。然后我将比较扩展到其他云提供商,您可以在这里看到详细的云提供商性能/价值比较(perl 工作负载,以及编译和 Geekbench 进行良好的衡量),在此过程中,正如我试图计算诸如可扩展性之类的东西,我可以看到 Google 的 AMD EPYC 虚拟机发生了一些奇怪的情况:如果您创建了 2xvCPU、4xvCPU 或 8xvCPU(没有进一步尝试)AMD Rome ( n2d) 或 AMD Milan ( n2d, t2d, c2d) 实例,其中 1 个 vCPU与其他的不一样,有时表现会更差(取决于工作负载,甚至差 50% 以上)。2xvCPUt2d或 Rome-是一个例外n2d,在这种情况下,有时您可以获得两个 vCPU 均为“慢速”类型。
在运行单线程基准测试时,该问题表现为显着的性能差异,因为 vCPU 对于调度程序来说是相同的,因此最终由哪个 vCPU 来处理负载只是运气问题。taskset但如果用设置进程的处理器亲和力的话就很清楚了。因此,以 Geekbench 为例,其中c2dCPU 0 是我们运行的“慢”CPU:
taskset 1 ./geekbench5
Run Code Online (Sandbox Code Playgroud)
得到单核结果 986(多核在单个 vCPU 上运行 2 个线程,因此类似)。然后尝试在另一个 …