我有跟踪表tbl_track与id,session_id,created_date字段
我需要计算一天的唯一session_id
在这里我得到了:
select count(0)
from (
select distinct session_id
from tbl_track
where created_date between getdate()-1 and getdate()
group by session_id
)tbl
Run Code Online (Sandbox Code Playgroud)
我觉得它可能是更好的解决方案
我有下一个实例化大约4000万次的类,它的所有实例占所有进程内存的80%左右(超过15GB).
class MyClass
{
String Field1
String Field2
String Field3
int Field4
int Field5
float Field6
SomeEnum Field7
Boolean Field8
Boolean Field9
Boolean Field10
Byte Field11
Byte Field12
}
Run Code Online (Sandbox Code Playgroud)
我想以某种方式优化这个类,但不知道在这种情况下我能做些什么.我想将布尔字段组合到一个字节或自定义字段对齐,但不确定它是否更糟,如果它不会破坏某些东西.还尝试将其更改为结构,但在现有代码中出现性能问题而没有显着改进.
那么,在这里可以做些什么来减少内存使用而不会严重降低性能?
此代码主要在x64服务器上运行,x32仅在开发中运行.
编辑:
这是一种假设非常快速返回依赖于所有这些数据的结果的服务.这里速度非常快,约为20ms-150ms.因此,对所有数据进行散列和排序,并且此类中的每个字段几乎在每个服务请求中使用.这可能是设计不好的东西,但设计在这里不是问题,我现在无法从头开始重新设计它.
我试图使用linq2sql更新SQL 2005中的表中的大约150,000条记录.说到xx.SubmitChanges(),它需要大约45分钟.
我在四核PC上运行sql作为本地实例.
有谁知道为什么这么长时间?或者这是正常的吗?
代码示例:
var y = db.x.Where(j => j.NumberOfOrders > 0).Select(k => k);
foreach (var item in y)
{
try
{
item.k = "bla";
}
catch (Exception ex)
{
//
}
}
db.SubmitChanges();
Run Code Online (Sandbox Code Playgroud) 我正在尝试从表中检索数据并将每行转换为CSV格式
s12,james,24,1232,Salaried
下面的代码完成了这项工作,但需要很长时间,行表超过1,00,000.
请告知优化技术:
while(rset1.next()!=false) {
sr=sr+"\n";
for(int j=1;j<=rsMetaData.getColumnCount();j++)
{
if(j< 5)
{
sr=sr+rset1.getString(j).toString()+",";
}
else
sr=sr+rset1.getString(j).toString();
}
}
Run Code Online (Sandbox Code Playgroud)
/ SR
如果我给了一组特定的数字(我将它存储在平衡的二进制搜索树中以方便),那么我想回答一个查询,要求我告知[A,B]之间的第i个最小数字是什么是一个执行该任务的快速算法?
从技术上讲,我可以从根遍历搜索A的树(或者一个数字,如果A不存在则立即大于该数字),而不是回溯搜索B(或小于B的数字),并且在这样做时我可以保留一个计数器我,确定我什么时候会在第i个号码.但这对我来说似乎不是最佳选择.
我可以在O(log n),我用来存储通用数字集的树的高度上执行此操作吗?
谢谢
我一直在编写一个JS算法.它在铬和狗的速度快,在FF慢.在chrome profiler中,我在一个方法中花费<10%,在FF中,相同的方法是执行时间的30%.有没有javascript结构要避免,因为它们在一个浏览器或其他浏览器中真的很慢?
我注意到的一件事是,如果你做得足够多,像简单的变量声明这样的东西可能会很昂贵.我加快了我的算法,因为他没有这样做
var x = y.x;
dosomthing(x);
Run Code Online (Sandbox Code Playgroud)
而且只是做
dosomething(y.x)
Run Code Online (Sandbox Code Playgroud)
例如.
typedef unsigned char uChar;
typedef signed char sChar;
typedef unsigned short uShort;
typedef signed short sShort;
typedef unsigned int uInt;
typedef signed int sInt;
typedef unsigned long uLong;
typedef signed long sLong;
Run Code Online (Sandbox Code Playgroud)
我有一个typedef列表所以当我定义变量时,我可以准确.例如,如果我只需要数字0-5,我就会使用uChar.但我正在使用C++并正在制作引擎.我正在阅读关于.NET占用X字节的布尔值,并且由于内存对齐,它使用整数更快.
由于内存对齐,性能等原因,是否有理由使用int而不是uChar?
如何优化以下PHP代码?
<?php
if(strlen($_POST['myName']) < 2 || isNumeric($_POST['myName']))
{
echo "Please fill in your name!";
exit();
}
if(!is_numeric($_POST['myAge']) || strlen($_POST['myAge'] < 1))
{
echo "Please enter only digits!";
exit();
}
if(strlen($_POST['myRes']) < 2 || isNumeric($_POST['myRes']))
{
echo "Please enter something!";
exit();
}
echo "Hi " . $_POST['myName'] . "! you are " . $_POST['myAge'] . " years old and live in " . $_POST['myRes'] . "? Nice to meet you!";
?>
Run Code Online (Sandbox Code Playgroud)
如果我想测试100个输入怎么办?如何以最佳方式进行测试?
正如标题所暗示的那样:假设我们有一个复杂的程序,我们想让它更快,但我们可以.我们能否以某种方式检测哪些循环或其结构的其他部分占用大部分时间来进行优化?
编辑:注意,重要的是假设软件非常复杂,我们不能逐个检查每个循环或其他结构,将定时器放在其中等.
optimization ×10
algorithm ×2
.net ×1
big-o ×1
binary-tree ×1
c ×1
c# ×1
c++ ×1
csv ×1
database ×1
debugging ×1
gdb ×1
java ×1
javascript ×1
jdbc ×1
linq-to-sql ×1
math ×1
memory ×1
php ×1
profiling ×1
search ×1
sql ×1
sql-server ×1
validation ×1