伙计们,我真的很喜欢-Wshadow选项,因为它有助于发现一些可能有问题的代码片段.我想在一个非常大的项目中使用它,但我不能,因为它太严格了.例如,它会针对以下情况抛出警告:
struct Foo
{
Foo(int info) : info_(info) {} //shadow warning is here
void info(){ ... }
int info_;
};
Run Code Online (Sandbox Code Playgroud)
gcc 在构造函数中抛出关于"int info"变量阴影"void info"方法的警告,这对我来说并不是真正有用的警告.
我真正关心的是如下情况:
int i = 0;
for(int j=0;j<10;++j)
{
int i = j; //local scope variable "int i" shadows outer scope variable
++i;
}
Run Code Online (Sandbox Code Playgroud)
是否有可能gcc只对这些案件发出警告?
伙计们,有没有办法克隆Lua状态?
在我的游戏应用程序中,Lua虚拟机的初始化过程非常繁重(大约1秒,因为许多脚本一次加载).我为每个自治代理程序都有一个单独的Lua VM,一旦创建了代理程序,它的Lua初始化对FPS影响非常大.
我正在考虑以下架构:如何保持"preforked"Lua状态,然后只为每个代理克隆?可能吗?
伙计们,我是社交游戏的开发者,游戏中已经有70万玩家,每天大约有7k新玩家注册,大约有5k玩家在线.
数据库服务器运行在功能非常强大的硬件上:16核CPU,24 Gb RAM,带有BBU的RAID-10,内置4个SAS磁盘.我正在使用Percona服务器(修补MySQL-5.1),目前InnoDB缓冲池是18Gb(尽管根据innotop只提供了一些免费缓冲区).数据库服务器运行良好(2k QPS,iostat%util为10-15%,在vmstat中"b"状态几乎总是0个进程,loadavg为5-6).然而,有时(每隔几分钟)我会得到大约10-100个慢查询(每个查询可能持续约5-6秒).
MySQL数据库中有一个大的InnoDB表占用了最多的空间.它有大约3亿行,它的大小约为20 Gb.当然,这个表正在逐渐增长......我开始担心它会以负面的方式影响数据库的整体性能.在不久的将来,我将不得不做些什么,但我不确定到底是什么.
基本上问题归结为是否要分片或只是添加更多RAM.当然,后者更简单.看起来我可以添加高达256 Gb RAM.但问题是我是否应该投入更多时间来实施分片,因为它更具可扩展性?
我有一个巨大的InnoDB表(> 5亿行),我想通过散列进行分区,以减少索引大小.我想以最短的停机时间(例如10分钟可接受)实现这一目标,有哪些可能的选择?
我在考虑如下事情:
主要问题是在步骤4中可以使用什么工具.问题是在步骤2中可能会对原始表进行大量更改:新插入,更新,删除 - 同步工具应考虑所有这些. ..
我相信另一种可行的方法是:
你会推荐哪一个?
伙计们,从linux中杀死shell的既定连接的最佳方法是什么?
看起来有'tcpkill'和'cutter'工具可用,但是,在我的gentoo amd64 tcpkill被'amd64'关键字和切割器禁用,使用时,打印错误"openning/proc/net/ip_conntrack:没有这样的文件或目录".
有没有其他方法来终止连接?
谢谢.
我是一个MMO游戏的开发者,目前我们在我的公司面临一些可伸缩性问题,我认为,这些问题可以通过适当的游戏世界聚类来解决.
我真的不想重新发明轮子,这就是为什么我认为Linux Virtual Server可能是一个不错的选择,特别是使用一些7级负载平衡技术.
我目前正在将ktcpvs视为负载平衡解决方案,并想知道它是否是一个合适的选择.
主要思想是在专用服务器上运行多个区域(就我的游戏而言"位置").当玩家决定前往某个特定位置时,负载均衡器会决定哪个区域服务器将实际为玩家提供服务(这实际上是我需要7级负载均衡器的原因)
你们对上述所有人都有什么看法?
更新:我向LVS用户发送了相同的问题邮件列表http://marc.info/?l=linux-virtual-server&m=124976265209769&w=2
更新:我也在gamedev.net论坛http://www.gamedev.net/community/forums/topic.asp?topic_id=544386上开始了类似的话题
我有一个项目,其中大量 C++ 代码是从一些元描述自动生成到多个文件中的。每当发生新构建时,如何让 Xcode 4 自动将这些文件添加到项目中?
注意:我知道构建阶段和自定义脚本,但我能找到的只是与资源相关的:将资源文件复制到最终的应用程序包。就我而言,我需要让 Xcode 4 自动将这些自动生成的文件注入应用程序构建过程中...
假设我有一个原始值,我需要使用反射分配给某个字段.我确信该字段具有相同的原始值类型.
是否有可能以某种方式设置这个值没有拳击?
void SetFloat(object o, string name, float val)
{
var type = o.GetType();
var fld = type.GetField(name);
fld.SetValue(o, val /*boxing happens here*/);
}
Run Code Online (Sandbox Code Playgroud)
PS这不是关于延迟,而是关于可能的GC压力.我正在使用Unity3D,它使用的是旧的Mono版本,而后者又使用非常优化的GC实现.每个额外的内存分配计数:(
PPS我正在构建自己的基于C#的解释器,避免反射似乎几乎不可能.
短篇故事:
我无法使用gcc -c选项使预编译的头文件正常工作.
很长的故事:
伙计们,我在Linux上使用gcc-4.4.1,在一个非常大的项目中尝试预编译头之前,我决定在简单程序上测试它们.他们"有点工作",但我对结果不满意,我确信我的设置有问题.
首先,我编写了一个简单的程序(main.cpp)来测试它们是否可以工作:
#include <boost/bind.hpp>
#include <boost/function.hpp>
#include <boost/type_traits.hpp>
int main()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后我创建了预编译头文件pre.h(在同一目录中),如下所示:
#include <boost/bind.hpp>
#include <boost/function.hpp>
#include <boost/type_traits.hpp>
Run Code Online (Sandbox Code Playgroud)
...并编译它:
$ g++ -I. pre.h
Run Code Online (Sandbox Code Playgroud)
(pre.h.gch创建)
之后,我使用和不使用预编译头来测量编译时间:
与pch
$ time g++ -I. -include pre.h main.cpp
real 0m0.128s
user 0m0.088s
sys 0m0.048s
Run Code Online (Sandbox Code Playgroud)
没有pch
$ time g++ -I. main.cpp
real 0m0.838s
user 0m0.784s
sys 0m0.056s
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好!快了近7倍,令人印象深刻!现在让我们尝试一些更现实的东西.我的所有资源都是使用-c选项构建的,出于某种原因我无法使用pch.您可以通过以下步骤重现这一点......
我创建了测试模块foo.cpp,如下所示:
#include <boost/bind.hpp>
#include <boost/function.hpp>
#include <boost/type_traits.hpp>
int whatever()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
以下是我尝试使用和不使用pch构建模块foo.cpp的时间:
与pch
$ time g++ -I. …Run Code Online (Sandbox Code Playgroud)