如何理解并优化.NET应用程序对内存的使用
【十五分钟Talkshow】如何理解并优化.NET应用程序对内存的使用
前言:十五分钟Talkshow,是我将利用业余时间开展的一个活动(不定期发布),主要是我选择某些与技术或者软件工程方面有关的主题进行讲解,每次一个主题,尽可能在15分钟左右讲完。这些演讲是免费公开的,允许分发。
备注:这次是第一次录制,本来计划是十五分钟左右,没有把握好时间,后期还会在内容编排上面再做一些改进
摘要提示:这是一个关于.NET应用程序中对于内存使用和优化的简短演讲,通过此视频,你可以了解
}什么是内存问题 }.NET应用程序是如何分配和释放内存 }深入分析内存使用情况并调优 讲义地址:http://HdhCmsTestxizhang测试数据/fmplan/resources/01/如何理解并优化.NET应用程序对内存的使用.pdf
视频地址:http://HdhCmsTesttudou测试数据/programs/view/BhY8Q2icnAY/
范例代码:(代码可以稍作修改,请自行准备有关的Excel文件,和数据库)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ClosedXML.Excel;
using System.IO;
using System.Diagnostics;
namespace Console
{
class Program
{
static void Main( string [] args)
{
UploadData();
GC.Collect();
System.Console.Read();
}
private static void UploadData()
{
///该软件的功能在于,读取某个文件夹里面一批EXCEL文件里面的数据,并将其插入到数据库中去
///测试用的EXCEL文件有470个,每个文件将要读取200个左右的单元格数据,根据名称读取
var folder = "d:\\temp\\demo" ;
var files = Directory.GetFiles(folder, "*.xlsx" );
//数据库连接
var db = new DataModelDataContext();
//准备一个计时器
var sw = new Stopwatch();
sw.Start();
System.Console.WriteLine( "开始工作:" + DateTime.Now.ToString());
files.ForEach(file =>
{
var bk = new XLWorkbook(file);
var names = bk.NamedRanges;
var fileName = Path.GetFileNameWithoutExtension(file);
var code = fileName.Substring(0, 6);
var year = short .Parse(fileName.Substring(7, 4));
var month = byte .Parse(fileName.Substring(11, 2));
names.ForEach(item =>
{
var name = item.Name;
var address = item.RefersTo;
var sheet = address.Split( '!' )[0].Replace( "'" , "" );
var cell = address.Split( '!' )[1];
var rng = bk.Worksheet(sheet).Range(cell).Cells().FirstOrDefault();
var v = ! string .IsNullOrEmpty(rng.FormulaA1) ? rng.ValueCached : rng.Value.ToString();
//如果是公式的话,则用ValueCached读取(有可能是空值,即表示当前没有值,有可能是错误,这种情况应该都是以#开头,#DIV/0!,#N/A,#NAME?,#NUM!,#VALUE,#REF!,#NULL!
db.ItemValues.InsertOnSubmit( new ItemValue()
{
Code = code,
Year = year,
Month = month,
ItemName = name,
Value = v
});
});
db.SubmitChanges();
bk.Dispose();
GC.Collect();
System.Console.WriteLine(file);
});
sw.Stop();
System.Console.WriteLine( "结束工作:{0},耗时:{1}秒" , DateTime.Now, sw.Elapsed.TotalSeconds);
}
}
}
作者: Leo_wl
出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于如何理解并优化.NET应用程序对内存的使用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did49802