Shandong comprehensively improves the public service quality of national fitness.

    Recently, the State Sports General Administration announced the second batch of national sports fitness model cities (districts) and national sports fitness model counties (cities, districts) were shortlisted, and 12 counties (cities, districts) including Qingdao, Dongying and Binzhou in Shandong Province and Zichuan District in Zibo City were shortlisted, ranking among the top in the country. Previously, Rizhao City, Chengyang District of Qingdao City and Boxing County of Binzhou City have been shortlisted for the first batch of national national fitness model cities and counties. Taking the exemplary creation as the starting point, the public service level of national fitness at all levels in the province has been continuously improved.

    At the same time, in accordance with the unified deployment of the province, cities actively promote new sports consumption, launch a number of characteristic sports events, create a number of outdoor sports quality products, launch a number of ice and snow sports demonstration projects, and create six excellent sports tourism routes at or above the provincial level.

    At present, the framework of Shandong national fitness system and the work pattern of "large groups" have been continuously improved. Create a "three-edge" sports belt along the Yellow River, the coast and the canal, and promote the integration of sports and education, sports and health, and sports and tourism in depth. Sports have made great progress in helping rural revitalization, and the national fitness atmosphere has become increasingly strong, and the quality of public services for national fitness has been comprehensively improved.

    Qiao Yunping, director of the Provincial Sports Bureau, said that this year we will continue to improve the construction of fitness facilities around the masses. Intensify the implementation of the short-board project of national fitness facilities, promote the supporting construction and daily management of sports facilities in urban residential areas, vigorously promote the implementation of the "four synchronizations" of community public sports facilities, and basically build a "fifteen-minute" fitness circle in urban communities in the province.

    Efforts have been made to expand the new carrier of national fitness and green convenience. Since the "14th Five-Year Plan", 77 large-scale sports parks have been built, renovated or expanded in our province, and the target tasks have been overfulfilled ahead of schedule, with a total of 165, and 15 more will be added during the year.

    In-depth promotion of national fitness facilities will be carried out, the maintenance and management of public fitness facilities will be promoted, and more than 100,000 pieces of sports equipment will be inspected and updated in time every year. At the same time, national fitness facilities such as intelligent fitness stations, intelligent fitness trails and national fitness halls will be vigorously built to continuously improve the level of intelligence.

    Guided by brand events, the national fitness events in our province are vigorously carried out. Last year, the National Fitness Games and the Winter National Fitness Games continued to be successfully held, with the number of participants exceeding 5 million, 13,000 community sports games, more than 50,000 mass sports events in the province, and the Shandong Intellectual Games and the Children’s Sports Conference were held for the first time.

    The construction of fitness facilities has been solidly promoted. The coverage rate of national fitness projects in counties and townships in the province has increased to 97.2%, and the per capita sports ground area in the province has reached 2.9 square meters. At present, the proportion of people who regularly take part in physical exercise in our province is 41.3%, and there are more than 48,000 sports social organizations and 258,000 social sports instructors at all levels.

    At present, all public stadiums and gymnasiums in the province and more than 2,000 school sports venues are open to the outside world. Coordinate central and provincial subsidies to support 136 public stadiums and gymnasiums to open to the public free of charge or at low fees, and set up more than 90 social supervisors for the opening of public stadiums and gymnasiums to continuously promote the standardized opening of public stadiums and gymnasiums and improve the service level.

    Rural sports continue to develop. The province has established 16 national and provincial demonstration bases for farmers’ physical fitness activities. In 2023, 4,091 "Four Games" of rural sports were held, and "Village Super" and "Village BA" and other events flourished everywhere.

    We will further promote the integration of sports and health, start 304 pilot projects of sports and health integration, and innovatively carry out the "Joint Action of Paying Attention to Adolescent Spinal Health". Regularly carry out national physical fitness testing, and provide testing and fitness guidance services to more than 100,000 people every year.

    At the same time, every year, our province carries out "Sports Volunteer and Civilized Practice", national fitness volunteer preaching, champion charity trip and other national fitness volunteer service activities, and has created 151 provincial-level national fitness volunteer service excellent sites. Forty-four projects were selected into the National Library of National Fitness Volunteer Service, and three projects were selected into the excellent cases of National Fitness Volunteer Service in 2023.

[Video] Websites such as "Cat Puff Video" and "Tudou" were punished for broadcasting illegal programs.

Go to [evening news] > >

    CCTV.com News (Evening News): The State Administration of Radio, Film and Television released the Announcement on Spot Check of Internet Audio-visual Program Services today, and well-known video websites such as "Cat’s Video" and "Tudou.com" were punished for their violations.


    The results of spot checks show that the Internet audio-visual programs provided by some websites contain obscenity, terror and violence, and endanger national security and interests. Some websites engage in Internet audio-visual program services without obtaining the License for Information Network Dissemination of Audio-visual Programs, some of which are not qualified for Internet information services, and some websites often disseminate audio-visual programs that do not meet the requirements of the state.


    In response to the above problems, local radio and television departments have ordered 25 websites that engage in Internet audio-visual program services without authorization, such as cat-flapping videos and super BT downloads, and whose broadcast content is seriously illegal, to stop the unauthorized Internet audio-visual program services. 32 websites, such as Tudou.com, China BT Download Network and Xunlei Commune, which repeatedly spread illegal audio-visual programs, but the violations were minor, were given warning and punishment.

Editor: Peng Wei

A guide to setting off fireworks and firecrackers in Shanghai in the late Qing Dynasty and the Republic of China

"Taofu firecrackers are new every year, and the Lantern Festival is never over. Try your best to compete for nothing else, and Nong’s family has a tea-picking lamp. " Li Songlin, a Shanghai scholar during the Jiaqing period, wrote this poem on bamboo branches to record the customs of his hometown. The custom of setting off firecrackers in Shanghai has been passed down for a long time. Until the ban on firecrackers in recent years, this trend lasted for a long time. The sound of firecrackers has long been a common memory of generations. However, in the hundred years after Li Songlin, Shanghai has undergone earth-shaking changes, from a county in the south of the Yangtze River to an international metropolis. The custom of setting off firecrackers and relevant regulations have also changed from time to time, from which we can get a glimpse of the historical process of urbanization and modernization in Shanghai.
Meet the god of wealth, the city streets in the early morning of the fifth day of 2013.
For quite a long time, firecrackers, as a special offer for the Spring Festival, were not shown in public only once a year in the first month. In previous occasions such as weddings, funerals, housewarming and opening, it was inseparable from crackling. What is even more grand in the scene is the community festival held regularly-the God Meeting. Houses and shops along the street have already placed incense tables and hung firecrackers on the roadside. The crowd surrounded the gods through the streets and lanes, and the guns rang for the second time, and the smoke spread.
Firecrackers set off by the roadside in the contemporary God-welcoming Games
For modern Shanghai residents, it is far from necessary to wait until the annual sales season to buy firecrackers as daily necessities. There are many firecrackers in the incense shops and tin foil shops around the temple, as well as shops along the street selling matches and cigarettes. Firecrackers sold in Shanghai since the late Qing Dynasty are mainly divided into two categories: citizens can choose to buy foreign products or support local manufacturers. In modern Shanghai, fireworks and firecrackers were very dependent on imports. After the opening of the port, the scale of the city expanded and a large number of migrants poured in, and the demand for fireworks and firecrackers also increased. Liling, Liuyang and other places in Hunan Province have been important firecracker industries since the Ming and Qing Dynasties, and their reputation has spread far and wide overseas. During the reign of Emperor Xian in the Qing Dynasty, there were more than 100,000 people engaged in "weaving guns" in Liuyang. By Xuantong, firecrackers exported by the two counties contributed 902,000 silver to the national finance every year. Wuchang and Hankou are also important producing areas, rich in a kind of firecrackers called "Quanhong". Fireworks and firecrackers in the middle reaches of the Yangtze River went down the river and appeared in the streets and lanes of Shanghai. There are a large number of businessmen from Hunan and Hubei who travel to Shanghai, and many of them take this as their business. The wealth brought by firecrackers makes them worry about food and clothing. Even if their hometown is in a bad year, there is a stable industry to make a living, so they will not go out to escape and be displaced.
Shanghai Qugong Real-life Temple was once a gathering place for Hunan businessmen traveling in Shanghai. Now the temple no longer exists, and the place was renamed Quxi Road.
According to the market survey in the late Qing Dynasty, the firecrackers produced in Hunan and Hubei are mostly 40,000 to 50,000 rings, which can’t fully satisfy the desire of Shanghai residents. Shanghai prefers big ostentation and extravagance, and favors the "high rise" of around 80,000 rings. If you don’t trust foreign firecrackers coming from afar and are worried about potential risks such as getting wet on the way, you can buy products freshly baked by local workshops in Shanghai. In modern Shanghai, with the convenience of geographical location and industrial development, materials gathered in all directions, and it was not difficult to obtain the five raw materials needed for the production of firecrackers: potassium chlorate, potassium nitrate, mirabilite, refined mirabilite and sulfur. The entry threshold of firecracker production is not high, and the technology is relatively simple. Hiring women and children for piecework production not only provides a livelihood channel for the urban poor in Shanghai, but also saves the production cost for firecracker manufacturers, and the price is naturally lower.
In modern times, Shanghai absorbed a large number of immigrants from surrounding areas, especially Ningbo, and the local firecracker workshops were mostly controlled by Ningbo immigrants. During the Republic of China, businessmen from Ningbo and Shaoxing joined forces with businessmen from Wuxi, Changzhou and other places in southern Jiangsu to form the Shanghai Firecracker Trade Association, hoping to compete with the Hunan and Hubei business gangs. When the competition among peers is fierce, consumers naturally benefit, and the shops under the trade association have clear industry norms and price scales, which has put an end to the phenomenon of exorbitant prices during the Chinese New Year holidays to a certain extent.
After determining the store, the timing of purchase is also very critical. According to industry practice, firecracker workshops usually start in September of the solar calendar, and intensive production lasts until March of the following year. April to August is the time for workers to return to their hometowns for farming. In addition to the peak season around the Spring Festival in the first month, there will also be a short sales peak when Tomb-Sweeping Day, the Mid-Autumn Festival and the Shanghai Chenghuang Temple are held in October. In the off-season, firecrackers are unsalable. Because of the difficulty in storage, the store usually gives a discount of about 50%. Around 1927, the price of firecrackers rose sharply, because the government of the Republic of China levied a "superstitious tax"-firecrackers, incense sticks, tin foil, paper horses and other things were regarded as superstitious products and were heavily taxed. Although the trade association and the Ningbo-Shaoxing Association of Shanghai Association jointly presented their grievances to the government and asked for exemption from such taxes and fees, they had little effect.
How to set it off is also a big problem. It should be noted that the prohibition of burning fireworks and firecrackers is not a new decree produced by contemporary cities to control air pollution. Since the Ming and Qing Dynasties, cities have become increasingly crowded, and fire protection has become a major problem. For this reason, Nanjing, Yantai, Ningbo, Guangzhou and other cities in the late Qing Dynasty had clear regulations prohibiting the burning of firecrackers.
Discussion on the Prohibition of Firecrackers in Shenbao in the Late Qing Dynasty
Relatively speaking, the attitude of the concession is more tolerant, and the first day of the first month is the date of discharge; Although foreigners who manage the concession do not participate in activities such as ancestor worship and welcoming the gods, they can also get approval as long as they report in advance. In addition, if it is accidentally set off in violation of regulations, the perpetrators will be released immediately after symbolically "punishing the ocean triangle". Compared with ordinary consumers, the attitude of the concession towards firecrackers vendors is much stricter. It is absolutely not allowed for roadside shops to sell firecrackers on weekdays. As long as they are found by the patrol room, the shops will be arrested and fined less than 100 yuan, and the goods will be detained until the Chinese New Year. This kind of surprise inspection is very frequent, and the patrol house in songshan road, the French Concession, has this hobby. A large number of patrols often drive police cars to search at the door. Whenever such a situation occurs, the store must prepare a set of rhetoric to deal with it, claiming that these firecrackers are only reserved for their own use and have no sales plan. If people get all the stolen goods, they can only entrust the guild to intercede.
Although the concession has a moderate attitude, there are some kinds of fireworks and firecrackers that must not appear in the concession. In a file of the patrol house in Shanghai public concession in 1927, there were some kinds of fireworks, such as Kaushing (Gaosheng), Kio Long (Kowloon) and Liu Shing (Meteor). These kinds of "heavy firearms" which may cause noise nuisance to the people were blacklisted in the concession.
"Gaosheng", commonly known as "Ertui", is still very popular in contemporary times. Image source: Dongfang. com.
One of the most intolerable firecrackers in the concession is the cannon. It is still very popular in contemporary times, and it is a great weapon for primary school boys to scare girls, commonly known as "throwing guns"; In the period of the Republic of China, the cannon was the source of social panic. On the night of January 9, 1932, a passenger boarded the "Yamato" ship of Daida Company with a bag of guns. The cannon suddenly exploded in a casual touch. Although no casualties were caused, the noise was enough to make the whole ship out of order. People mistakenly thought it was a shooting and rushed into the cold river. The worse influence of slapping guns is produced in the streets. In the patrol house in the concession in the 1930s, it was described that "at the end of the past year, it was a common practice for hooligans and urchins to slap guns. In the streets and alleys, urchins hid the guns in their sleeves, followed by women in boudoir, and suddenly threw them out …" It can be seen that this kind of mischief has a long history. In the eyes of foreigners, it is obviously very ungentlemanly and indecent, and it is really indecent. When it is strictly prohibited, in fact, the police station can’t enforce the law on children, and street guns are repeatedly banned.
Although the concession promised to set off flammable firecrackers from the first day to the fifteenth day, this time was not fixed during the Republic of China. The Nanjing National Government advocated abolishing the lunar calendar and adopting the solar calendar. Therefore, in the 1920s and 1930s, Shanghai was allowed to shoot guns on the 15th day of New Year’s Day, but not during the Spring Festival. After the August 13th Incident, martial law was imposed at night in the concession, and firecrackers were not allowed after 5 pm in the French concession and 6 pm in the public concession. The Japanese puppet government is particularly sensitive to firecrackers, which is used to get rid of evil and filth, and makes the invaders feel pressure. In the early summer night of 1939, a rare lunar eclipse was observed in Shanghai, and the Chinese in the public concession set off firecrackers to drive away the tengu that swallowed the moon. This move made the Japanese military panic and suspected that it was a demonstration directed by anti-Japanese forces behind it. Japan submitted an investigation request to the Ministry of Industry and Commerce of the Public Concession in an attempt to enforce the law across regions.
After the victory of the Anti-Japanese War, the commercial reconstruction, the firecracker guild resumed, and more than 40 firecracker workshops joined the guild and registered with the government for the record. The complete rules and regulations system was made public for the first time and had legal effect. The trade association even fully considered the government’s opinion and agreed not to produce the most unpopular gun. However, the market did not prosper for a long time, and inflation became increasingly serious. The workers in the firecracker workshop first rebelled. They set up the "Fireworks Industry Professional Conference" and started labor negotiations with the firecracker industry trade association, demanding higher treatment and higher wages. Prior to this, the trade association had decided to support Jiang Jingguo’s "August 19th" economic defense line, saying that although prices soared, the price of firecrackers would not rise. As a result, the profit of the firecracker industry has been difficult to support the expenditure of hiring labor.
At the beginning of liberation, the new government took over the old industrial and commercial organizations in Shanghai, and the firecracker industry ushered in a new life. It was no longer regarded as a superstitious product and was heavily taxed. On the contrary, this popular festival item was recognized by the new government and received strong support as a representative of local native products. In 1949 and 1950, various parades and celebrations were held frequently in Shanghai. On National Day, Army Day and the anniversary of the liberation of the city, people woke up at four o’clock in the morning with firecrackers and took to the streets. At eight o’clock in the evening, the parade will reach its climax, and there will be an hour-long fireworks display on the roof of Happy Valley Apartment at Huangpi North Road, Nanjing West Road.
During this period, the firecracker industry developed rapidly, and the number of firecracker workshops in the city rose to more than 50. In 1953, the firecracker dealers of the trade association responded to the call of the government and moved most of the workshops to Pudong towns outside the city, leaving only shops in Yimiao District and Penglai District in the city, but this does not mean that firecrackers are no longer popular in Shanghai. In 1956, the socialist industrial and commercial transformation was at its climax, and the whole city was filled with joy and passion. In the second week of January of that year alone, thousands of people lined up in the city to buy firecrackers every day. The local firecrackers were in short supply, and the trade associations sent people to Jiangyin, Shaoxing, Suzhou and other places to purchase goods every day. According to statistics, Shanghai residents had to set off more than 8 million firecrackers every day during that time. In the sound of firecrackers in the new era, the carnival Shanghai residents witnessed the rebirth of the city after a hundred years of vicissitudes and wars.
Celebration Parade in Shanghai in 1950s
Reporting/feedback

The seventh generation of agricultural robots, the whole environment "data" monitoring irrigation! Science and Technology Empowers Jinshan "Smart Agriculture"

Jinshan as an agricultural regionIn recent years, the transformation of old and new kinetic energy in agriculture has been continuously promoted.Through the empowerment of science and technology, we will accelerate the development of agriculture into science and technology, intelligence, informationization and precision, and put wings on rural revitalization..

At present, it is spring ploughing season. At Diantian Robot Smart Farm in Tinglin Town, technician Zhou Pengfei is debugging the latest generation of agricultural robots with his colleagues. Rotary tillage, ridging, watering, sowing, and sending operation instructions through mobile phones, these agricultural robots equipped with GPS and Beidou dual systems will "do their jobs" and automatically realize accurate operations with an error of less than 5 cm.

Zhou Pengfei, Technician of Shanghai Diantian Agricultural Cooperative.

Manual operation can’t make a straight line. If we use our machine, every positioning is very accurate, and a straight line will be formed from point to point, making the ridge surface very flat.

In order to change the traditional agricultural production mode, six years ago, Shanghai Diantian Agricultural Cooperative targeted the field of intelligent agricultural robots. Nowadays, the agricultural robots in the cooperative have been updated to the seventh generation. By using technologies such as 5G, artificial intelligence image recognition and big data system, more than 30 tasks such as farming, weeding and picking can be carried out, covering all aspects from cultivated land to harvest.

Zhangqian, a staff member of Shanghai Diantian Agricultural Professional Cooperative.

After upgrading, we also have some of our own supply chains, including some cooperative factories.

At the same time, the AI intelligent operating system and saiga architecture of agricultural robots independently developed by the cooperative can realize the cooperative operation of multiple agricultural robots independently, and truly realize the digitalization of the whole process of agricultural planting and farming management. At present, these intelligent agricultural robots have been widely used in farms in Shanghai, Zhejiang and Northeast China. In 2023, the annual GDP of cooperatives is expected to reach 150 million yuan.

Wang Jinyue, Chairman of Shanghai Diantian Agricultural Cooperative.

In the future, this R&D system will be more open, open source and more adaptable.

"Intelligentization" is not only applied to agricultural operations, but also reflected in modern agricultural irrigation. In the cooperative base of Tinglin Town Huawei Water Saving Technology Group Co., Ltd., a large number of air and soil sensors are distributed in the intelligent strawberry greenhouse with full environmental control. They pay close attention to the growth of crops all the time, and the data such as soil pH value and dry humidity will be monitored in real time and sent back to the computer, which will give instructions after judgment, so as to realize accurate automatic irrigation.

Jiang Tingting, technician of Huawei Water Saving Technology Group Co., Ltd.

The expert system will analyze whether these data are in line with the growth of crops, so that we can know whether it needs watering or fertilization.

By monitoring irrigation with "data" of the whole environment, each greenhouse can save more than 95% of water and fertilizer, and the strawberry yield is also increased by nearly 30%. At present, Huawei has carried out intelligent water and fertilizer integration, Internet of Things agriculture, digital factory, facility cultivation system construction and technical guidance in all regions of the country, covering an area of more than 3 million mu in 25 provinces across the country. Only Huawei drip irrigation technology can benefit about 1.2 million mu of farmland every year, saving costs and increasing efficiency for growers by about 1.2 billion yuan.

Lv Mingli, Chairman of Huawei Water Saving Technology Group Co., Ltd.

Huawei has accumulated more than 20 years in the industry, and we are the first entity to realize the commercial application of crop growth models, accurately matching different growth stages to meet the needs of water, fertilizer, light and heat.

At present, Jinshan District has established smart agriculture experimental zones such as BOE, Songlin, Jiufeng and Rongmei. The intelligent soilless culture system was built by Zhilian Factory, a special vegetable in Langxia Town, BOE, with the help of AI technology, and the mechanized planting coverage in the vegetable growing process was over 90%. Dingdong is the first self-operated vegetable planting base to buy vegetables, which can realize the mechanization of seedling raising, tillage, ridging, transplanting, plant protection and harvesting. In the next step, Jinshan will focus on the joint construction of the national agricultural science and technology modernization pioneer zone, and continuously introduce, digest and absorb cutting-edge agricultural science and technology achievements, so that digital empowerment can promote the high-quality development of Jinshan agriculture.

Lazio can’t catch up with Naples and gain another 18 points advantage after the latest Serie A points report to Inter Milan.

In the early morning of March 12th, Beijing time, there were three rematches in the 26th round of Serie A in the 2022-23 season. After some fierce battles, Lazio drew 0-0 away from Bologna, Napoli beat Atalanta 2-0 at home and Udinese beat Empoli 1-0 away.

Napoli can be said to be invincible in Serie A this season. They lost to Lazio in the last round, but they can adjust quickly. Today, they continue to play at Diego Maradona Stadium against Atalanta, another arch-rival. Napoli completely suppressed their opponents. In the 5th minute, Napoli attacked on the right side, and Politano and Zalinski made a collision with the wall and broke into the restricted area. The goalkeeper Musso struggled to save the ball. In the 27th minute, Kvaratskheliya forcibly broke through the two-man defense on the left side of the restricted area and entered the restricted area, but his last shot was half a beat slow, and then the ball was blocked without angle. Two minutes later, Napoli took a free kick on the right side of the penalty area. Zalinski took the penalty and hung it to the back point. Osmain grabbed the nod and hit the goal, and the ball was only slightly higher than the crossbar.

In the 41st minute, Napoli counterattacked the ball in the frontcourt, Politano volleyed vigorously in the restricted area, and Musso fought bravely again. Yi Bian fought Napoli again and continued to attack. In the 59th minute, Osmain shook the left side of the defensive oblique plug on the right side of the frontcourt. Kvaratskheliya followed up with the ball and broke into the restricted area. One person faced the Atlanta sixers’ defense. Kvaratskheliya kept shaking and flashed a space to make a strong shot, and the ball went into the net. Naples broke the deadlock 1-0. In the 76th minute, when Napoli took the right corner kick, Elmas took the penalty in front of the door. Rahmani grabbed the point and threw his head at the door, and the ball went straight into the lower right corner of the goal. Naples sealed the victory 2-0 and stopped the decline in time.

Lazio, who ended Naples in the last round, started their familiar routine operation of dropping the chain again today. Lazio’s visit to Dalaya Stadium was completely suppressed by Bologna today. In the 27th minute, Bologna attacked from the left, Giri Copreau hung obliquely in the restricted area at a 45-degree angle, and Ferguson grabbed the nod and mallet to attack the goal. BOOM’s ball was blocked by the post, and Lazio escaped. Six minutes later, Bologna made another killing on the left, Barro stopped the ball in the restricted area and made a two-step shooting, and goalkeeper ProWiddel bravely saved the ball. In the easy-to-side rematch, the two sides played more dullly, and Lazio had almost no chance. In the end, the two sides drew 0-0.

In terms of standings, Napoli stopped the decline and then started the winning mode. Inter Milan lost unexpectedly yesterday. Lazio did not lose today, but it also lost points in the footsteps of Inter Milan. After two weeks, Naples once again fixed the difference with the second place at 18 points, and the position of the leader was unshakable. Lazio was unable to win, so it failed to surpass Inter Milan to rise to the second place, and the difference of one point temporarily ranked third. Bologna scored 1 point, which temporarily surpassed Youwen and rose to seventh place.

In the top scorer list, Osman failed to score today, and still ranked first with 19 goals. Lautaro ranked second with 14 goals, while lukman and Nzola tied for third with 12 goals. Kvaratskheliya ranked fifth with 11 goals after scoring today. Velahovich, Anautovich, Dibala and others just squeezed into the top ten with 8 goals.

China version of chatGPT is here. Does it matter to you? Learn about it and don’t regret it!

China version of chatGPT is here!

Does it have anything to do with you?

Don’t argue yet, it really matters!

"chatGPT", translated into Chinese: "Chat!"

"China chatGPT", hehe,

Chinese chat, you should always be able to!

Tell me something professional:

ChatGPT is a language processing tool driven by artificial intelligence technology launched by OpenAI company in the United States. It can learn and understand human language and have a dialogue. You can also interact according to the context of the chat, and really chat and communicate like human beings. I can also write emails, video scripts, copywriting, translation, codes and so on.

ChatGPT uses the Transformer neural network architecture, and has the ability of language understanding and text generation. Especially through connecting a large number of corpus training, ChatGPT has the ability to know astronomy above and geography below, so as to communicate with human beings without barriers.

Do you understand? In fact, it is an upgraded version of man-machine dialogue such as "Xiao Du", "Xiao Yi" and "Xiao V".

It’s just that chatGPT is more advanced and smarter. To put it bluntly: it is better to speak human words!

As for "China version of chatGPT", it is through the study of Chinese language that we can deeply understand the essence of Chinese culture and make China’s words clear and thorough! Then the question comes: What impact does "China version of chatGPT" have on our lives?

Personally,
"China chatGPT"
It is a milestone for the development of artificial intelligence technology. China is at the global leading level in the field of natural language understanding and related AI technologies, and its application in various fields such as words, pictures, videos and music has initially formed market benefits.

With the continuous development of digital technology, breakthroughs have been made in the fields of digital infrastructure, digital software design and top-level digital applications. Virtual idols, virtual anchors, virtual teachers and other virtual human industries relying on AIGC technology have ushered in favorable development, thus constantly releasing the IP value of virtual people and enabling them to gain new development momentum.

The virtual community is not only used in games, but will run through all aspects of daily life in the future!

Imagine: you want to go to the government to do business, and you are at home. You can enter the government administrative center in the virtual community through digital virtual people to communicate with the staff! Of course, the other party is also a virtual person (digital twin), and all procedures can be signed digitally. And you just sit at home, and you can accomplish what you usually need to do with a pommel horse.

Is it a bit like the scene in The Matrix? This is not magic at all. With the development of science and technology, virtual reality only enhances our feelings.

And its strong learning and cognitive ability will help our lives to change qualitatively. There will be no doubt about this! Isn’t the Internet and e-commerce all precedents?

"China version of chatGPT" is very powerful. Through self-study and analysis, its work handling ability will be extremely shocking! This will lead to, you may lose your job!

See!Customer service personnel, data analysts, translatorsIt is the most likely job to be robbed by ChatGPT in the near future.

Interestingly, when someone asked ChatGPT about this issue, ChatGPT replied: "Some repetitive and highly standardized work will probably be replaced by automation and robots!" ChatGPT also said: "Humans are still creating new jobs and needs, and technology will also create new job opportunities! Therefore, human beings and artificial intelligence will coexist, not replace each other! "

Listen, how well it is said! How modest!

Actually, yes"China chatGPT"There is really no need to worry too much. The artificial intelligence represented by ChatGPT may replace most simple and repetitive routine work, which is the general trend. The more functions of artificial intelligence are to improve work efficiency, assist and serve human beings to live with higher quality.

It suddenly occurred to me,

Chairman Mao’s poem "Spring and Snow in Qinyuan";

Cherish Qin Huang Hanwu, slightly lose literary talent; Tang Zong Song Zu, slightly less coquettish. A generation of tianjiao, cheng jihan, only knows how to bend a bow and shoot a big eagle. The past is gone, count the romantic figures, and look at the present!

People are always smarter than AI technology, and innovative ability, empathy and critical thinking are all manifestations of human intelligence, which is unmatched by many advanced artificial intelligence.

Messi assists Mbappé to beat brest 2-1 away.

Messi assists Mbappé in the lore.

In the early morning of March 12th, Beijing time, brest played at home in the 27th round of Ligue 1 against Paris Saint-Germain. As there are probably four relegation teams in Ligue 1 this season, brest ranks 15th, but only one point ahead of the relegation zone. In terms of total value, the Paris team is as high as 890 million, while brest is only 80 million.

In the 37th minute of the game, Messi instigated the attack, and Mbappé shot hard and was saved, but the ball was not far away, and Sohler made up the shot to break the goal.

In the 44th minute, brest got the chance through a simple long pass, and Hornot faced the defense of the two men and shot from a small angle to equalize the score.

In the 90th minute, Messi sent a wonderful assist, Mbappé passed the goalkeeper and finished the lore. Messi completed the milestone of 300 assists and Mbappé scored 2000 goals.

In the end, Paris beat brest 2-1 away, got rid of the depression of the Champions League and ushered in a four-game winning streak.

At 22: 30 pm on March 11th, Bayern beat augsburg 5-3 in the 24th round of the Bundesliga.

In the second minute, Berisha turned and shot low, hitting the ball into the lower right corner of the goal. Sommer couldn’t save it, and Bayern scored 0-1.

In the 16th minute, Sane divided the ball to the right in front of the penalty area. Cancelo caught the ball and entered the penalty area. He swung past the defender’s right foot and volleyed at a small angle. Bayern equalized the score 1-1.

In the 19th minute, Manet passed the ball with a barb on the right side of the penalty area, and pawar shot the ball in front of the door. Bayern overtook augsburg 2-1.

In the 35th minute, Bayern’s right corner kicked into the penalty area, and Delicht grabbed the header in the middle, and the goalkeeper flew to save the ball. pawar’s right foot volley in front of the door scored twice, and Bayern scored 3-1 augsburg.

In the 45th minute, Manet volleyed his left foot from the restricted area and was saved. Sanet headed into the empty net in front of the door, and Bayern led augsburg 4-1.

In the 55th minute, Berisha took the penalty. He tricked Sommer into hitting the right side of the goal and scored twice. augsburg was 2-4 behind Bayern.

In the 74th minute, Bayern made a reactionary fast break after stealing in the frontcourt. Cancelo passed the back point on the right side of the penalty area, Alfonso Davidson volleyed the goal, and Bayern led augsburg 5-2.

In the 93rd minute, Vargas made a high-speed dash with the ball on the left, and came to the front of the bottom line on the left side of the penalty area. cardona followed him and scored a goal. augsburg scored 3-5 Bayern.

Bayern started: 27- Sommer, 2- Yu Pamekano, 4- Driget (83′ 23-Blind), 5- pawar, 19- Alfonso-Davies (77′ 40- Mazravi), 22- Cancelo, 6- kimmich, 7- Gnabry (71′ 25-Muller).

Augsburg starting: 1- Ji Chivici, 2- Gumny (46′ 22-Yago), 6- Gouweleeuw, 23- Bauer, 3- pedersen, 27- engers (46′ 13- Rexbeke), 14- Baumgartlinger, 10-A- Mayer (77′ 34

Archsummit direct hit | Build a smooth natural flutter page

Instructors

Amoy Technology Department | Leisure Fish Technology | Cloud

"Fully strengthening the flutter fluidity, sharing challenges, online monitoring tool construction, optimization means to precipitate in component containers, and finally optimized advice."

Zhang Yunlong (cloud from), idle fish client experts.Since Netease, byte, Ali is running. At the current Department of Alibaba, there are currently responsible for idle fish APP packages, fluidity, start-up equation experience.

Outline

This sharing revolves around FLUTTER fluidity, respectively: 1.Flutter fluidity optimization challenge; 2. List container and flutterdx component optimization; 3. Performance measurement and devTool extension; 4.Fltter sliding curve optimization; 5. Performance optimization suggestions.

FLUTTER fluency optimization challenge

Business complexity challenge

FLUTTER has always been known by everyone, and the list controls displayed by Flutter Gallery (shown in the left) is indeed very smooth. But the actual business scene (shown on the right) is more complex than the Gallery list demo:

  1. Same card, more and complex (such as rounded) view control;

  2. When the list scroll, there are more view logic, such as scrolling control of other controls and disappearing;

  3. Card controls, there are more business logic, such as a different label, activity price, etc. based on background data, and there is also common business logic, etc.

  4. Because idle fish is an e-commerce app, we need to have certain dynamic capabilities to deal with frequently changed activities. Here we use the Flutter Dynamicx components of Ali to implement our dynamic capabilities.

Framework challenge

Let’s look at the overall flow of the list, here only pay attention to the free scroll phase after the finger is released.

  1. When the finger is released, the initial speed is calculated based on ScrollDragController.end;

  2. UI Thread requests RequestFrame to Platform Thread, and calls BegInframe to UI Thread at Platform Thread.

  3. The UI Thread Animate phase trigger list slides a little distance while registering the next frame callback to Platform Thread;

  4. Ui Thread Build Widget, generate / update the renderObject tree through the three tree DIFF algorithm of Flutter;

  5. UI Thread RenderObject Tree Layout, Paint Generates an Scene object, and finally passed to Raster Thread to draw on-screen;

The above flow must be completed in 16.6 ms to ensure that the frame cannot be guaranteed. Most of the cases, there is no need to build a new card, but when the new card enters the list area, the entire calculation amount will become huge, especially in complex business scenes, how to ensure all calculations within one frame of 16.6ms, Is a small challenge.

The figure above is a sliding devTool sample, and the Carton stage occurs when the new card is on the screen, and the other phases are very smooth, because the scrolling speed is attenuated, so the carton interval is also getting bigger. Because most of the time is very smooth, the average FPS is not low. However, the new card is built at the time of production, which gives us a stylish body feeling.

Challenge of dynamic capabilities – Flutter Dynamicx

The free fish APP card uses the self-developed Flutter Dynamicx to support our dynamic capabilities. Basic Principle: Online Edit Layout DSL, generate DX files and send it. The end side generates the DXComponentWidget by parsing the DX file and combines the back card data, and finally generates Widget Tree. FLUTTER DYNAMICX technology brings dynamic update capabilities, unified monitoring capabilities (such as dxcomponentwidget monitoring cards), good research and development insecurity (online DSL and Android Layout, and optimize Android), online editing capabilities;

But in performance, we also pay a certain price: DX cards add time to the template loading and data binding overhead, Widget wants to recursively create through WidgetNode traverses dynamically, and the view nesting layer will be deeper (followed by later).

Description: Flutter Dynamicx Reference Ali Group DSL Rules Realization

User’s sense of physical challenge

I have already described above, and the card in the FLUTTER list is more obvious.

When Android RecycleView occurs, the physical feel is not obvious, and the FLUTTER list has occurred when the card occurs, not only the time pause, but also a hopping on the OFFSET, and the physical feeling of small card is also changed. It is obvious;

Suppose the list content is simple enough, scrolling does not happen, we also found that the Flutter list and Android RecycleView are not the same:

? Use ClampingscrollPhysics to feel the feeling of similar magnets when the list is stopped.

? Use BOUNCINGSCROLLLPHYSICS, the list is started, and the speed attenuation is faster;

On the 90Hz machine, the early flutter list is not smooth, the reason is that the touch sampling rate is 120 Hz, and the screen refresh rate is 90Hz, causing partial screens to be 2 touch events, part is a 1 touch event, last Resulting in rolling OFFSET effects. When the Flutter 1.22 version, RESAMPLINGENABLED can be used to re-sample the touch event.

List container and flutterdx component optimization

Telling the challenge of Flutter fluidity optimization, now share how you optimize the smoothness and precipitate into PowerScrollView and Flutter Dynamic components.

PowerScrollView design and performance optimization

PowerscrollView is a snarefish team’s self-developing Flutter list assembly, with better packages and supplements on the Sliver Agreement: Data increased deletion, complement local refresh; layout, supplemented the waterfall flow; incident, supplement the card on the screen , Away, scrolling events; control, support for scrolling to Index.

In terms of performance, the waterfall flow layout optimization, local refresh optimization, card division optimization, and sliding curve optimization.

PowerScrollView Waterfall Flow Layout

PowerScrollView Waterfall Flow Layout provides longitudinal layout, lateral layout, mixed arrangement (transverse card and ordinary card mix). Nowadays, most of the listings of the hiped fish are available in PowerScrollView’s waterfall flow layout, such as the home page, search results page, etc.

PowerScrollView Waterfall Flow Layout Optimization

First, through conventional cache optimization, cache each card upper corner X value and which column belonging.

Compared to the Slivergrid card into the list area, the waterfall flow layout, we need to define Page, card admission to create and leave the field destruction need to be units. Before optimization, Page calculates cards in a screen visual area, and in order to determine the starting point Y value of Page, the primary layout needs to calculate the Page N and N + 1 two pages, so the amount of cards involved in the layout calculation is much lower, and the performance is low. After optimization, the approximation of all card height averages calculates Page, which greatly reduces the number of participating in the layout card, and the number of cards destroyed by Page also becomes less.

After the column cache and paging optimization, use the idle fish Self-developing Benchmark tool (follow-up) to compare the waterfall flow and GridView, view the number of frames and the worst frame consumption, can find that performance performance is basically consistent.

PowerScrollView local refresh optimization

Leisure fish products expect users to browse products more smooth, will not be loaded by loadmore, so the list is required to trigger LoadMore during scrolling. FLUTTER SLIVERLIST When the LOADMORE supplement card data, the List control is tender, and the slterlist building will destroy all cards and recreate it, and the performance data can be imagined very bad. PowerScrollView provides a layout refresh optimization: all cards on the cache screen, no longer recreate, ui thread Optimize from the original 34MS to 6MS (see the lower left picture), the right image is viewed by Timeline, the depth and complexity of the view built Optimize.

PowerScrollView card fragmentation optimization

The second figure 2 card is the early search results page of the idle fish, and it is not a waterfall flow. To view the Timeline chart when the card is created (adding DX Widget creation and PerformLayout overhead), you can find that the complexity of the card creation is extremely large. On the normal mid-range machine, the UI Thread consumes more than 30ms, to be optimized to 16.6ms It is very difficult to use routine optimization. For this purpose, two cards can be disassembled, and each frame is used to render.

Directly see the source code, the basic idea is to mark the card widget, when the card is true, the right card first _BuildPlaceHoldercell builds the Widget (empty Container), and register the next frame. In the next frame, the right card is modified with NeedShowRealcell for True, and self-laminate, and then build real content.

Is it delayed to build a true content of the card, will it affect the display content? Because the FLUTTER list has a cacheextends area on the visual area, this part of the area is not visible. In most scenarios, users don’t see the scene of the blank card.

Also using the FLUTTER BENCHMARK tool to perform performance test, you can see 90 points before and after the card division, 99 packet consumption has a significant downgrade, and the number of lost frames is also reduced from 39 to 27.

Note Here, when listening to the next frame, you need widgetsbinding.instance.scheduleframe to trigger the RequestFrame. Because when the list is displayed, it is possible because there is no callback from the next frame, resulting in the task of the delay display queue, eventually makes the first screen content display is incorrect.

Delayed framing optimization ideas and suggestions

Comparison of Flutter and H5 design:

  1. DART and JS are single-threaded models that need to be sequenced and deserialized across threads;

  2. Flutter Widget is similar to H5 VDOM, there is a DIFF process.

Early Facebook In React Optimization, the Fiber Architecture is proposed: Based on the VDOM Tree’s Parent Node → Sub-node → Brothers Node → Sub-node, the VDOM Tree is converted to the Fiber data structure (chain structure), and the reconcile phase is implemented. Interrupt recovery; based on the Fiber data structure, the control section continues in the next frame.

Based on React Fiber thinking, we propose its own delayed framing optimization, not just left and right card size, further, render content disassembled as the current frame task, high-excellent delay task and low delay tasks, the upper screen priority is sequentially changed Low. Where the current frame task is the left and right white Container; the high-optovel delay task is exclusively frame, where the picture portion also uses Container placeholders; in the idle fish scene, we dismantled all DX image widget from the card, as low as low Excellent delay tasks and is set to no more than 10 in one frame consumption.

By disassembling the 1 frame display task to 4 frames, the highest UI on the high-end machine will be optimized from 18 ms to 8 ms.

Description 1: Different business scenes, high-yogle and low-probing task settings have different description 2: Slide on the low-end machine (such as Vivo Y67), the sub-frame scheme will let the user see the list whitening and content Upable process

FLUTTER-DYNAMICX Component Optimization – Principle Explanation

Edit the "Class Android Layout DSL", compile the binary DX file. The end side is downloaded, loaded, and resolved, and the WidgetNode Tree is generated. See the right figure.

After the business data issued in the background, the Widget Tree is generated by recursively traversing WidgetNode Tree, and finally appears.

Description: Flutter Dynamicx Reference Ali Group DSL Rules Realization

FLUTTER-DYNAMICX Component Optimization – Cache Optimization

I know the principle, it is easy to discover the flow in the red box in the picture: binary (template) file parsing load, data binding, Widget dynamic creation has certain overhead. To avoid repeated overhead, we have cached DXWIDGETNODE and DXWIDGET, and the blue selection code shows the Widget cache.

FLUTTER-DYNAMICX Component Optimization – Independence ISOLATE Optimization

In addition, the above logic is placed in a stand-alone ISOLATE, and the maximum amount is lowered to the lowest. After the line technology grayscale AB experiment, the average carton bad frame ratio is reduced from 2.21% to 1.79%.

FLUTTER-DYNAMICX Component Optimization – Hierarchical Optimization

FLUTTER DYNAMICX provides class Android Layout DSL, adds Decoration layers to implement each control Padding, Margin, Corner, adds the Decoration layer; to implement the DXContainerRender layer. Every layer has its own clear duty, the code level is clear. However, since the increase in 2 layers caused the Widget Tree hierarchy, the DIFF logic of 3 trees became complicated and the performance becomes low. To do this, we merge the Decoration layer and the DXContainerRender layer, see the middle Timeline diagram, which can be found that the optimized flame grading and complexity becomes low. After the line technology grayscale AB experiment, the average carton bad frame ratio is reduced from 2.11% to 1.93%.

Performance measurement and devtool extension

Tell the optimization tool, which is described here to make a measure of how to measure, and the build / extension of the tool.

Offline scene – Flutter BenchmarkWhen the FLUTTER is detected, the calculation consumption on the UI Thread and Raster Thread is required. So the Flutter optimizes before and after comparison, using the time consuming data of the UI Thread and Raster Thread of each frame.

In addition, the fluency performance value is affected by the operating gesture, the scrolling speed, so the error based on the measurement results of manual operations will have errors. Here, use the WidgetController control list control FLING.

The tool provides the interval between the scrolling speed, the number of scrolls, the scroll, and the like. After the scrolling test is completed, the data is displayed by the UI and Raster Thread frame, 50 points, 90 points, and 99-positioned frame consumption, and give performance data from a variety of dimensions.

Offline scenario – Based on the recording screen

Flutter Benchmark gives multi-dimensional measurement data at the Flutter page, but sometimes we need a horizontal comparison competition app, so we need to have a tool transverse to more different technologies. The idle fish is self-developed in the Android side to self-developed the recording screen data. Imagine the mobile phone interface into multiple screens, get the screen data (byte arrays) (byte arrays) by sending VirtualDisplay, interval 16.6 ms, using the Hash value of the byte array represents the current picture, the current 2 The Hash-read hash value is unchanged, and the Carton is considered.

In order to ensure that the fluency detecting tool app itself does not have a carton, it is read, which is compressed, and the compression ratio on the low-end machine is higher.

Through the detection of the tool without invading, a rolling test can be detected, the average FPS value (57), the frame distribution is variance (7.28), 1S time, the large number of large cards (0.306), large card cumulative time (27.919). Intermediate array display frame distribution: 371 represents the number of normal frames, 6 generations 16.62ms of small cardon quantity, 1 generation 16.63MS quantity.

Here is the definition of the big Carton: Carton, greater than 16.6 * 2 ms.

Offline Scene – Performance Detection Based on DEVTOOL

In addition, the scenes of the idle fish are also extended DevTool. In a Timeline map extended time-consuming, greater than 16.6ms red highlight, convenient development.

Online scene-Flutter high available detection FPS implementation principle

Online scene, idle fish self-developed Flutter high available. The basic principle is based on 2 events:

  • Ui.window.onbeginframe event

    • Engine notifies the VYSNC signal arrival, notify UI Thread to start preparing the next frame building

    • Trigger schedulerbinding.handlebeginframe callback

  • Ui.window.ondrawframe event

    • Engine Notification UI Thread Start Draw Next Frame

    • Trigger schedulerbinding.handledrawframe callback

Here we have recorded a frame start event before the Handlebeginframe processing, and the end of the frame is recorded after HandledrawFrame. Each frame here needs to calculate the list control offset value, and the specific code implementation is implemented. When the entire accumulated exceeds 1, executes a calculation, filtering out the scene without scrolling, calculates the FPS value using each frame.

Online Scene – FlutterBlockcanary Line Stack Stack Detection

After using Flutter high available to get the online FPS value, how to locate the stack information, you need to collect stack information. Free fish collects carton stacks using the self-developed Flutterblockcanary. The basic principle is that the signal is transmitted in the C layer, such as 5ms once, each signal receives the Dart Ui Thread stack collection, the resulting series of stacks are aggregated, and the same stacks in a row are considered to have occurred in Carton, this This stack is the stack of Carton we want.

The following figure is the stack information collected by Flutterblockcanary, and the middle framefpsRecorder.getscrolloffset is a Carton call.

Online scene – FlutterBlockcanary Detects overreservation

In addition, FlutterBlockcanary also integrates over-rendering detection capabilities. Replace the Buildowner object by replying widgetsflutterbinding, replacing the buildowner object, and rewrive the ScheduleBuildFor method to intercept Element. Based on the dirty ELEMENT node, extract the depth of the dirty node, the number of direct child nodes, the number of all child nodes.

Based on the number of all child nodes, in the idle fish details page, we are positioned to the "Quick Question View" during scrolling, and the number of transes and all child nodes are too large. View the code, positioning the view hierarchical level, by sinking the view to the leaves node, the number of stasible Build nodes is optimized from 255 to 43.

FLUTTER sliding curve optimization

The front told Tarton optimization means and measures and standards are mainly surrounded by FPS. But from the user’s physical feel, we found that Flutter also has many optimal points.

FLUTTER list slide curve and native curve

Compare the scroll curve of OFFSET / TIME, you can find that the Flutter BouncingScrollsimulation and iOS scroll curve are close, Clampingscrollsimulation and RecyClerView are close. Check the Flutter source code, it is true.

Because BouncingScrollsimulation has rebound, many pull-down refreshes and load more features are based on BOUNCINGSCROLLSIMULATION package, which causes the Flutter page sliding, physical and native Android pages inconsistent.

Flutter list performance and optimization under fast sliding

Although the Clampingscrollsimulation slides and Android RecyclerView is close, but in the quick sliding scenario, you can find that the flutter list scrolls quickly stops, and quickly slides. For the reason, you can see the moment that the sliding curve is stopped, and the speed is not a decline, and it will speed up, finally reach the end point, and stop. Based on the source code formula, the curve can be discovered that flutter clampingscrollsimulation is approximated by the Formula Fitting Method to approximate the Android RecyclerView Curve. In the case of rapid sliding, the focus of the formula curve is not 1 corresponding value, but the right image is broken, the speed will become fast.

It can be understood that the FLUTTER’s formula fit is not ideal. In the near future, there is also a PR proposed using DART to implement the RecyclerView curve.

Flutter list performance and optimization in the case of Carton

The first chapter is mentioned in the case of the same FPS, such as the FPS 55, the native list feels smooth, and the styles of the FLUTTER list are more obvious. One reason here is that the native list usually has multiple thread operations, and there is a lower probability of the big Carton; the other reason is that the same small carton’s body, FLUTTER has obvious statter, and the native list can’t feel. So why?

When we build cards, we deliberately create small Carton, compare the flutter list and RecyclerView before and after, and you can find that RecyclerView Offset does not hop, and the Flutter curve has a lot of burrs, because Flutter scrolling is based on D / T curve calculation, When a carton occurs, △ t doubles, and OFFSET also trips. It is also because of time pause and offset jump, let users know that the Flutter list is not unstoppable in small Carton.

By modifying the Y=D (T) formula, in the case of Carton, ΔT-16.6ms will ensure that the small Carton case is not hopped. In the case of Great Carton, it is not necessary to reset the ΔT to 16.6ms, because in the parking time, it has been clearly allowed to give the user to feel the carton, OFFSET does not have a trip only to make the list rolling distance short.

Performance optimization

Finally share some suggestions for performance optimization.

  1. In optimization, we should pay more attention to the user’s body, not only the performance value. The upper right map is visible, even if the FPS value is the same, but the taste occurs, the body feels clearly; the bottom of 2 game recording screens, the left side average 40 fps, the average of 30 fps, but the body feels is more smooth .

  2. Not only should I pay attention to the performance of UI Thread, but also pay attention to the overhead of Raster Thread, such as the characteristics / operation of Save Layer, but also causing Carton.

  3. In terms of tool, it is recommended to use different tools in different scenarios. It should be noted that the problem of tool detection is a stable reproduction problem or the occasion of data jitter. In addition, it is also necessary to consider the performance overhead of the tool itself, and the tool itself needs to be as low as possible.

  4. In terms of optimization ideas, we must broaden the direction. Most optimized ideas of Flutter are optimized computing tasks; and multithreading direction is not, refer to the independent ISOLATE Optimization of Flutter Dynamicx; in addition, it is difficult to digestive tasks for one frame Whether it is possible to disassemble multiple frame time, try to make a card per frame, priority to the user.

  5. Finally, I recommend paying attention to the Flutter community. The Flutter community continues to have a variety of optimization, regularly upgraded Flutter or dimensions, CHERRY-PICK optimization submission, is a good choice.

Performance analysis tool usage suggestions

Flutter tool, the first push is the official devtools tool, the Timeline and CPU Flammatic maps can help us discover problems well; in addition, Flutter also provides a wealth of Debug Flags to assist our positioning problems, familiar with each Debug switch Role, I believe that there will be no homage to our daily research and development; in addition to official tools, performance logs are also good auxiliary information, as shown in the lower right corner, the idle fish Fish-Redux component outputs the task overhead in the scroll, can It is convenient to see that at that moment.

Performance analysis tools themselves

Performance testing tools inevitably have certain overhead, but must be controlled within an acceptable range, especially on the line. A case in front sharing the FLUTTERBLOCKCANARY detection tool, discovers the framefpsRecorder.getscrolloffset time consumption, and the logic is just that Flutter is highly available to scroll offset. See the right front source code of the right picture, each frame needs to be recursively traversed to collect RenderViewPortBase, which is a small overhead. Finally, we avoid the repetition calculations during the scroll through the cache optimization.

Carton optimization suggestions

Reference official documents and excellent performance articles, precipitated a lot of routine optimization methods in the UI and GPU side, such as refreshing the minimum widget, using itemextent, recommended using Selector and Consumer, etc., avoid unnecessary DIFF computing, layout calculation, etc. Reduce SAVELAYER, replace half-transparent effects using images, alleviate the overhead of the Raster thread.

Because of the reasons, only part of the sequence, more common optimization suggestions see the official documentation.

Use the latest Flutter Engine

As mentioned earlier, the Flutter community is also active, Framework and Engine layers have an optimized PR income, which mostly can make the business layer without perception, and better optimize performance from the bottom viewing angle.

Here, there is a typical optimization scheme: existing flutter solution: When each VSYNC signal arrives, it triggers the build operation. At the end of Build, start register the next vsync callback. In the case where a carton does not occur, see Figure Normal. However, in the case of carton, see Figure Actual Results, just over 16.6ms here, because it is a registration listening to the next vsync callback, triggered the next build, for this, a large amount of time in the middle. Obviously, what we expect is, at the end, immediately execute, assuming enough to execute enough, this time the screen is still smooth.

If the team allows, it is recommended to upgrade the flutter version regularly; or maintain your own Flutter independent branch is also a good choice. From the community Cherry-Pick optimization, you can guarantee that business stability can also enjoy the community contribution. In short, I recommend you to pay attention to the community.

Summarize

In summary, the challenges, monitoring tools, optimization methods, and recommendations are shared by Flutter fluidity optimization. Performance optimization should be people-centered, develop monitoring indicators and optimization points from actual physical fitness; fluency optimization is not one, the above share is not all, there are many optimized means to pay attention: How to better multiplex Element, how to avoid Platform Thread busy leading to vsync signal lacking, etc., is a point that can be concerned. Only the continuous technical enthusiasm and conscious spirit can optimize the APP performance to the ultimate; technical teams also have access to open source communities, other teams / companies to connect, That stone stone, Can be attacked.