我编写了一个C#应用程序,它在循环中不断运行,并且有几个线程写入log4net文件.
问题是应用程序运行的时间越长,完成循环所需的时间就越长.我已经运行了一个ANTS性能分析器,并注意到大部分CPU时间花在使用log4.net进行日志记录.
日志越详细,它使用的CPU越多,30分钟后它使用100%的CPU.如果我禁用日志记录,循环所需的时间将随着时间的推移保持不变.我查看了Windows性能监视器,物理磁盘大部分时间都是IDLE.
我试图将我的日志记录保持在最低限度,但即使记录的数量相对较少,我仍然遇到问题.
以下是我的Log4net.xml配置文件的示例:
<log4net>
<root>
<!-- Levels: OFF, DEBUG, INFO, WARN, ERROR, FATAL-->
<level value="INFO" />
<appender-ref ref="RollingLogFileAppender" />
</root>
<!--Logs to a file-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:\\logs\\log-file.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+ExclusiveLock" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="20" />
<maximumFileSize value="1MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger %L %M Schdl:[%property{scheduleContext}] Job:[%property{jobContext}] - %message%newline" />
</layout>
</appender>
</log4net>
Run Code Online (Sandbox Code Playgroud)
我正在使用记录的每个对象使用相同的记录器.
log4net.ILog logger;
log4net.Config.BasicConfigurator.Configure();
logger = log4net.LogManager.GetLogger(typeof(myProject));
Run Code Online (Sandbox Code Playgroud)
为什么它运行得越久就会使用越来越多的CPU?
任何关于如何改善这一点的建议将不胜感激.
是否可以在运行时更改app.config中的ConnectionString值?根据MSDN文档,它应该可以作为ConnectionString属性"获取或设置连接字符串".
我的代码看起来像这样:
ConnectionStringSettings mainConnection = ConfigurationManager.ConnectionStrings["mainConnection"];
mainConnection.ConnectionString = "Data Source=SERVER;Initial Catalog=" + NewDatabaseName + ";Integrated Security=True";
Run Code Online (Sandbox Code Playgroud)
我收到的错误是:"未处理的异常:System.Configuration.ConfigurationErrorsException:配置是只读的."
我想在Python中添加一系列拆分.时间以"00:08:30.291"之类的字符串开头.我似乎无法找到使用Python对象或API来使这个方便/优雅的正确方法.似乎时间对象不使用微秒,所以我使用datetime的strptime来成功解析字符串.但是,日期时间似乎没有添加,我真的不想溢出几天(即23 + 2小时= 25小时).我可以使用datetime.time但它们也不会添加.Timedeltas似乎是合适的,但似乎有点尴尬从其他事物转换.也许我错过了一些明显的东西.我希望能够:
for timestring in times:
t = datetime.strptime("%H:%M:%S.%f", timestring).time
total_duration = total_duration + t
print total_duration.strftime("%H:%M:%S.%f")
Run Code Online (Sandbox Code Playgroud) 我正在使用libavcodec(截至3/3/10的最新git)将原始pcm编码为aac(启用了libfaac支持).我通过每次使用codec_context-> frame_size样本重复调用avcodec_encode_audio来完成此操作.前四个调用成功返回,但第五个调用永远不会返回.当我使用gdb中断时,堆栈已损坏.
如果我使用audacity将pcm数据导出到.wav文件,那么我可以使用命令行ffmpeg转换为aac而没有任何问题,所以我确定这是我做错了.
我写了一个小的测试程序来复制我的问题.它从文件中读取测试数据,可在此处获取:http: //birdie.protoven.com/audio.pcm(签名16位LE pcm约2秒)
如果我直接使用FAAC,我可以完成所有工作,但如果我可以使用libavcodec,那么代码会更清晰一些,因为我也编码视频,并将两者写入mp4.
ffmpeg版本信息:
FFmpeg version git-c280040, Copyright (c) 2000-2010 the FFmpeg developers
built on Mar 3 2010 15:40:46 with gcc 4.4.1
configuration: --enable-libfaac --enable-gpl --enable-nonfree --enable-version3 --enable-postproc --enable-pthreads --enable-debug=3 --enable-shared
libavutil 50.10. 0 / 50.10. 0
libavcodec 52.55. 0 / 52.55. 0
libavformat 52.54. 0 / 52.54. 0
libavdevice 52. 2. 0 / 52. 2. 0
libswscale 0.10. 0 / 0.10. 0
libpostproc 51. 2. 0 / 51. 2. 0
Run Code Online (Sandbox Code Playgroud)
有没有我没有设置的东西,或者在我的编解码器环境中设置不正确,也许?任何帮助是极大的赞赏!
这是我的测试代码: …
我现在已经阅读了两次分支/标记.我似乎无法掌握这个想法.我希望对分支有一个很好的理解,以防止错误到主线.
由于我是一个视觉学习者,任何人都可以绘制SVN分支的概念吗?或者用简单的英语来描述这些概念?
假设我有一个团队中的3个开发人员和一个repo"out_app"dev1如何创建分支并合并回主线?这个效果如何影响2和3?
详细说明步骤,点击菜单项,输入设置...以解决上述问题.
我将大约350行(带有一些数据收集)从MS SQL Server传输到iSeries进行处理.我觉得这个过程太慢了,差不多一分钟左右.我在做LINQ2SQL中的所有MS SQL.以下是我目前正在做的基础知识:
我意识到这是很多查询,但大多数都是来自MS SQL Server中的不同表.所有这些都需要至少一次加入.我正在考虑将一个查询和外部维修和事故成本中的油和零件加入到一个查询中,因为这两个查询都存储在同一个表中,看看是否能提高性能.
你有什么其他的建议?
请注意,这是供应商提供的产品,我宁愿不创建任何尚未存在于数据库中的存储过程或视图(基本上没有).
更新:我有另一篇文章,研究提高速度的替代方案.
我有一个返回我想要的行的查询,例如
QuestionID QuestionTitle UpVotes DownVotes
========== ============= ======= =========
2142075 Win32: Cre... 0 0
2232727 Win32: How... 2 0
1870139 Wondows Ae... 12 0
Run Code Online (Sandbox Code Playgroud)
现在我希望返回一个列,其中包含逗号分隔的" 作者 " 列表(例如原始海报和编辑).例如:
QuestionID QuestionTitle UpVotes DownVotes Authors
========== ============= ======= ========= ==========
2142075 Win32: Cre... 0 0 Ian Boyd
2232727 Win32: How... 2 0 Ian Boyd, roygbiv
1870139 Wondows Ae... 12 0 Ian Boyd, Aaron Klotz, Jason Diller, danbystrom
Run Code Online (Sandbox Code Playgroud)
SQL Server 2000没有CONCAT(AuthorName, ', ')聚合操作,我一直伪造它 - 为TOP 1作者执行简单的子选择,并且作者计数. …
sql-server aggregate sql-server-2000 concatenation string-concatenation
我无法从CSV文件中读取数据
final String DELIMITER = ",";
Scanner fileScan = null;
Scanner dataSetScan = null;
String dataSet = null;
String sql = "";
File users = new File("user.txt");
String nickname = "";
String lastname = "";
String firstname = "";
String cartype = "";
String personimage = "";
String carimage = "";
int user_id = 0;
try {
fileScan = new Scanner(users);
} catch (Exception e) {
System.out.println(e);
}
while(fileScan.hasNext()){
dataSet = fileScan.nextLine();
dataSetScan = new Scanner(dataSet);
dataSetScan.useDelimiter(DELIMITER);
nickname = dataSetScan.next(); …Run Code Online (Sandbox Code Playgroud) 在Accurev中如何从流号转换为流名称,Say我有流号是257如何知道流名称?
我有一个表有一个产品成本的列,但有些(很少)行在列中混合了文本.
是否可以创建一个十进制类型的新列,并用另一列填充它,并忽略其中包含"坏"数据的行?
我知道我可以通过代码来做到这一点,但希望我能用sql查询做一些怎么做?
c# ×2
sql ×2
sql-server ×2
.net ×1
aac ×1
accurev ×1
aggregate ×1
audio ×1
c ×1
csv ×1
datetime ×1
ffmpeg ×1
ibm-midrange ×1
java ×1
libavcodec ×1
linq-to-sql ×1
log4net ×1
logging ×1
performance ×1
python ×1
svn ×1
time ×1
tortoisesvn ×1
windows ×1