我有一个应用程序,它使用System.Timers.Timer对象来引发由主窗体(Windows窗体,C#)处理的事件.我的问题是,无论我设置.Interval(甚至1毫秒)有多短,我每秒最多得64次.
我知道Forms计时器的精度限制为55毫秒,但这是System.Timer变体,而不是Forms表单.
该应用程序占用1%的CPU,因此它绝对不受CPU限制.所以它所做的只是:
即使没有其他工作要做,_Count每秒最多增加64次.
这是一个"回放"应用程序,它必须复制进来的数据包,它们之间只有1-2毫秒的延迟,所以我需要能够每秒可靠地发射1000次的东西(尽管如果我能满足100的话)是CPU限制的,我不是).
有什么想法吗?
我知道这是超基本的,但这是我一直持有的假设,并且想验证它是否属实(通常,具体针对各种实现的细节)
假设我有一个包含文本列"Fruit"的表.在该专栏中,只出现了四个值中的一个:梨,苹果,香蕉和草莓.我有一百万行.
如果我将它提取到另一个具有Fruit列且只有那四行的表中,然后将原始列作为外键,那么它是否可以节省空间,而不是每次重复该数据(平均)25万次?
我假设四个水果名称只存储一次,而百万行现在有指针或索引或某种引用到第二个表中.
如果我的行值比短水果名称长,我认为节省/优化甚至更大.
我有以下摘录在各个方面都可以正常使用,但是它要求我知道我计划提前打开多少WebSocket。
相反,如果我从一个主机列表开始并且必须创建N个WebSocket连接,那么如何在循环中为N个3个Websocket(通过“异步与”)完成此代码的工作?
我已经在循环中等待着,这是我无法弄清楚如何“循环”的“与...异步”。
async with websockets.connect('ws://192.168.0.174:81') as websocket1:
async with websockets.connect('ws://192.168.0.194:81') as websocket2:
async with websockets.connect('ws://192.168.0.179:81') as websocket3:
datatosend = GetBallData()
for socket in [websocket1, websocket2, websocket3]:
await socket.send(datatosend)
Run Code Online (Sandbox Code Playgroud) 在我的下面的小代码片段中,我有一个简单动态对象的包装类,当它不为null时,我可以访问"id"和"name"这两个属性.对于那些在家里玩的人来说,这是一个Facebook对象.
无论如何,在我的GET访问器中你可以看到我必须检查我给出的动态对象是否为null,因为在空引用上引用动态属性将是AV.但是因为我可能是第一百万个人,所以我认为有一种更简洁和优雅的方式来表达这一点.
哦,强大的圣贤啊,请赐教.谢谢!
public class IdNamePair
{
private dynamic _data;
public IdNamePair(dynamic data)
{
_data = data;
}
public string Id
{
get
{
return (_data == null) ? null : _data.id;
}
}
public string Name
{
get
{
return (_data == null) ? null :_data.name;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在构建一个可能的车辆数据库,其中每个条目都有一个Make,Model,Year和Engine.
我把它分成了制表(福特,雪佛兰,宝马等)和模型(Impala,Camaro,F-150等)和年(1920,...... 2012)和发动机(327,350等).
由于我现在每个Make,Model,Year和Engine都有一个表,并且每个表都有唯一的主键,因此主"MakesModelsAndYears"表中的每一行都只由四个外键组成.
这是否过度,或者真正存储的效率高于我创建独特索引的一个大表?我对"一个大桌子"方法的关注是像1970年这样的年代会重复多次(1970年雪佛兰Impala,1969年雪佛兰Camaro等),因为它有模型甚至引擎.
谢谢你的指导!

跟进:
对于那些追随者,我将反馈结合到答案中并得出了这个模式.图像没有详细显示FK,但它们实际上是答案所暗示的:

给定一个超级基础的顶点着色器,例如:
output.position = mul(position, _gWorldViewProj);
Run Code Online (Sandbox Code Playgroud)
我遇到了很多麻烦,因为我将 _gWorldViewProj 设置如下;我尝试了两者(有点晃动)以确保它不只是倒退。
mWorldViewProj = world * view * proj;
mWorldViewProj = proj * view * world;
Run Code Online (Sandbox Code Playgroud)
我的解决方案原来是:
mWorldView = mWorld * mView;
mWorldViewProj = XMMatrixTranspose(worldView * proj);
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么需要这个 XMMatrixTranspose 吗?我知道 XNA 和 HLSL 之间存在矩阵差异(我认为),但普通 C++ 和 HLSL 之间没有,尽管我可能是错的。
问题是我不知道是我错了还是我错了!所以如果有人能准确地告诉我为什么需要转置,我希望不会再犯同样的错误。
c# ×2
sql ×2
.net ×1
async-await ×1
c#-4.0 ×1
direct3d ×1
foreign-keys ×1
hlsl ×1
matrix ×1
mysql ×1
primary-key ×1
python ×1
timer ×1
websocket ×1
winforms ×1