小编Vla*_*mir的帖子

小是美丽的,但它也快吗?

我和同事讨论过简单字符串解析器的实现.一个是"小",10行代码,使用c ++和流,另一个是70行代码,使用switch case并通过char迭代字符串char.我们测试了超过100万次迭代,并使用时间命令测量速度.似乎漫长而丑陋的方法平均快1秒.

问题:输入:字符串

"v=spf1 mx include:_spf-a.microsoft.com include:_spf-b.microsoft.com include:_spf-c.microsoft.com include:_spf-ssg-a.microsoft.com ip4:131.107.115.212 ip4:131.107.115.215 ip4:131.107.115.214 ip4:205.248.106.64 ip4:205.248.106.30 ip4:205.248.106.32 ~all a:1.2.3.4"

输出: map<string, list<string>>包含每个键的所有值,例如:ip4,include,a

上面给出的输入字符串上的一次迭代的示例输出:

关键:一

1.2.3.4,

关键:包括

_spf-a.microsoft.com,_spf-b.microsoft.com,_spf-c.microsoft.com,_spf-ssg-a.microsoft.com,

关键:IP4

131.107.115.212,131.107.115.215,131.107.115.214,205.248.106.64,205.248.106.30,205.248.106.32,

"小而美"的解析器:

        istringstream iss(input);
        map<string, list<string> > data;
        string item;
        string key;
        string value;

        size_t pos;
        while (iss.good()) {
                iss >> item;
                pos = item.find(":");
                key = item.substr(0,pos);
                data[key].push_back(item.substr(pos+1));
        }
Run Code Online (Sandbox Code Playgroud)

第二种更快的方法:

  typedef enum {I,Include,IP,A,Other} State;
  State state = Other;
  string line = input;
  string value;
  map<string, list<string> > data;
  bool end = …
Run Code Online (Sandbox Code Playgroud)

c c++ parsing coding-style

6
推荐指数
2
解决办法
963
查看次数

如何在flutter插件中使用本地aar?

我用以下方法创建了一个flutter插件:

flutter create --template plugin flutter_plugin
Run Code Online (Sandbox Code Playgroud)

我已经将aar文件放入flutter_plugin / android / src / main / libs文件夹中,
我已经修改了flutter_plugin / android / build.gradle

并将rootProject.allprojects部分更改为

rootProject.allprojects {                                                                                               
     repositories {                                                                                                      
         google()                                                                                                        
         jcenter()                                                                                                       
         flatDir {                                                                                                       
             dirs "src/main/libs"                                                                                  
         }                                                                                                               
     }                                                                                                                   
}  
Run Code Online (Sandbox Code Playgroud)

并在android {}之后添加了依赖项部分:

dependencies {                                                                                                          
     implementation (name:"mylib",ext:"aar")                                                                     
} 
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行时:flutter run

我收到gradle异常,显然它试图在示例目录:example / src / main / libs / mylib.aar中寻找我的mylib.aar并失败。

我可以将lib放在示例dir中,但我认为这不是正确的方法,因为我希望我的aar成为插件的一部分。

android flutter flutter-plugin

5
推荐指数
3
解决办法
1423
查看次数

标签 统计

android ×1

c ×1

c++ ×1

coding-style ×1

flutter ×1

flutter-plugin ×1

parsing ×1