怎么让lammps 程序怎样让自己跑的快快一点

【图文】lammps_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
&&lammps的介绍
大小:2.22MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
我已经读取了文本中的单词,并建了一棵二叉树,然后将二叉树的结点都推入指针栈中,然后运用快速排序的算法,最后输出结果,代码如下:跑一篇单词很大的英文小说平均占用内存:288.376K
平均CPU时间:0.891S
平均墙钟时间:0.419S请问怎么改动程序,使其跑得更快?
#include&stdio.h&
#include&string.h&
#include&stdlib.h&
#include&ctype.h&
#define MAX 50
struct tnode{
char word[MAX];
struct tnode *left,*
typedef struct sort{
char w[50];
List list[1000000];
struct tnode *arr[1000000];
int curr=0;
int cmp(const void *a,const void *b)
List *p1 = (List*)a;
List *p2 = (List*)b;
if(p1-&num!=p2-&num)
return p2-&num-p1-&
return strcmp(p1-&w,p2-&w);
struct tnode *treewords(struct tnode *,char *);
void treeprint(struct tnode *);
int main()
char word[MAX];
int i,k,n;
struct tnode *
root=NULL;
bfp=fopen("article.txt","r");
while((c=fgetc(bfp))!=EOF){
ungetc(c,bfp);
for(i=0;(c=fgetc(bfp))!=' '&&c!='\n'&&c!=EOF;i++){
if((c&='A'&&c&='Z')||(c&='a'&&c&='z')){
c=tolower(c);
word[i]=c;
word[i]='\0';
if(strlen(word)&0)
root=treewords(root,word);
treeprint(root);
for(i=0;i&i++){
list[i].num=arr[i]-&
strcpy(list[i].w,arr[i]-&word);
qsort(list,n+1,sizeof(list[0]),cmp);
out=fopen("wordfreq.txt","w");
for(k=0;k&k++){
fprintf(out,"%s %d\n",list[k].w,list[k].num);
for(k=0;k&100;k++){
printf("%s %d\n",list[k].w,list[k].num);
fclose(bfp);
fclose(out);
struct tnode *treewords(struct tnode *p,char *w)
if(p==NULL){
p=(struct tnode*)malloc(sizeof(struct tnode));
strcpy(p-&word,w);
p-&count=1;
p-&left=p-&right=NULL;
else if((cond=strcmp(w,p-&word))==0){
p-&count++;
else if(cond&0){
p-&left=treewords(p-&left,w);
p-&right=treewords(p-&right,w);
return (p);
void treeprint(struct tnode *p)
if(p!=NULL){
treeprint(p-&left);
arr[curr++]=p;
treeprint(p-&right);
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
可以着手从下面几个方面优化:
将fgetc逐个读取字母的方式改为 先读取输入文件的一段内容到缓冲区然后处理缓冲区内的数据 的方式
if(strlen(word)&0)这里可以用if (i & 0)来替代
对排序用的数据结构和单词数据结构调整,方便拷贝
struct tnode{
char word[MAX];
struct tnode *left,*
typedef struct sort{
char w[50];
// 可以改为
struct tnode{
char word[MAX];
struct tnode *left,*
typedef struct sort{
char w[50];
// 然后排序之前的拷贝可以使用`memcpy`完成,高效
如果以后数据量很大,当前的树也可能成为瓶颈,可以考虑更复杂的BST或者AVL
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
亮点在这里
List list[1000000];
struct tnode *arr[1000000];
32位下,List根据内存对齐会有56个字节,1M个List,还有1M个指针…
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是: 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
LAMMPS软件与分子模拟的实现
下载积分:2000
内容提示:LAMMPS软件与分子模拟的实现
文档格式:PPT|
浏览次数:107|
上传日期: 16:05:30|
文档星级:
全文阅读已结束,如果下载本文需要使用
 2000 积分
下载此文档
该用户还上传了这些文档
LAMMPS软件与分子模拟的实现
关注微信公众号lammps中程序如何从0K升到100K_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
lammps中程序如何从0K升到100K
我有更好的答案
可以给小一点接近0K,因为你要从0K升到100K,487639是一个随便什么大点的整数就可以了。然后可以用命令fix
1 all nve加上fix
damp all viscous 0.05 (0.05值比较大,具体意义参考Lammps的说明文档,仿真开始前在定义好原子数据文件,推荐值是100倍步长,如果timestep设置为0,具体参考说明文档。以上方法为个人觉得比较简便实用的,让模型自然释放一下,势能场参数以后首先.055取消nvt,改为nvt,让系统控制温度变化,从起始0K随着仿真进行(run)逐渐变化到100K(仿真结束时的温度),后面0.055是阻尼参数,但是效果好不好取决于你想跑什么材料了,解决力学还是传热问题.055,需要耐心多读,同时参考别人的仿真input script。希望有所帮助,具体看你什么材料,以及设定步长多少)跑个几万步,可以用命令velocity
all create 0,那阻尼系数可以给0。)然后unfix 1fix
2 all nvt temp 0 100 0。Lammps文档比较长.01 487639里面0.01是指定的温度,别忘了先撒一下全局原子的初始速度(如果原子数据文件中没给速度的话).00055 ps(metal units),同时damp起到一定稳定作用。(别忘了跑之前先定义步长和别的一些输出参数,如thermo_style custom step temp可以看温度的变化
采纳率:54%
为您推荐:
其他类似问题
lammps的相关知识
换一换
回答问题,赢新手礼包(window.slotbydup = window.slotbydup || []).push({
id: '4540180',
container: s,
size: '250,200',
display: 'inlay-fix'
热门资料排行
添加成功至
资料评价:
所需积分:0}

我要回帖

更多关于 看谁跑的快 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信